day09
他のサイトから情報を取得するにはどうすればいいですか?
既存のWebサイトでは、JSONインポートではなくXML(eXtensible Markup Language)を使用しています.
//XML:확장 가능한 마크업 언어로 이런 식이이었다.
<name> 철수</name>
<title>제목</title>
//JSON
{
name:"철수",
title:"제목"
}
クリップ(Clip)
特定のサイトで新聞を切ってから持ってきてください.Discoに特定のサイトを入力すると、headタグのmetaタグでlogタグを検索して切り取ることができます.
このような形でチャイナドレスを使って持ってきたのです.
スクリプトの練習
旗竿をダウンロードし、ソースコードを作成してOGラベルを切り取ります.
import axios from "axios";
import cheerio from 'cheerio'
async function createBoardAPI(mydata) {
// 3. 게시글에서 url찾아서 스크래핑
const targetURL = mydata.contents.split(" ").filter( el => el.startsWith("http"))[0]
// 1. 스크래핑
const aaa = await axios.get(targetURL)
// 2. OG골라내기
const $ = cheerio.load(aaa.data)
//each는 cheerio문법으로
$("meta").each((_, el) => {
if ($(el).attr('property')) {
const key = $(el).attr('property').split(":")[1]
const value = $(el).attr('content')
console.log(key, value)
}
})
}
const frontendData = {
title: ":안녕하세요",
contents: "여기 정말 좋은 거 같아요! 한번 꼭 놀러오세요! 여기는 https://www.naver.com 이에요!!"
}
createBoardAPI(frontendData);
スクロール
定期的に他のサイトの情報を複数回取得します.実際にはブラウザに接続してデータを取得します.最近はDATAの価値がかなり上がっています.そのため、多くの事件が発生した.ここでは、スクロールイベントについて説明します.
ここはどうですか、イベントをスクロールします。ビットのリンクで見ると、ここではどのようにして遊び人のDATAを好きなように利用して発生したイベントなのか、スクロールするときは許可されているサイトでしかできないので、あまり頻繁に情報を取得しすぎるとサーバーにブロックされる可能性があるので注意が必要です.
robots.txtファイルでスクロール可能な部分を特定できます.
import puppeteer from 'puppeteer'
//iframe은 셀렉터를 복사해도 다른 사이트라 적용이 안 된다.
//
async function startCrawling() {
const browser = await puppeteer.launch({
headless: false, // false 일 경우 실행 시 웹사이트 확인 가능
args: ['--no-sandbox', '--disable-setuid-sandbox'],
}); const page = await browser.newPage()
await page.setViewport({ width: 1280, height: 720 })
await page.goto("https://finance.naver.com/item/sise.naver?code=005930")
await page.waitForTimeout(1300)
const framePage = await page.frames().find(el => el.url("/item/sise_day.naver?code=005930"))
for (let i = 3; i <= 7; i++) {
await page.waitForTimeout(500)
// iframe 안에 바디 안에 테이블이 있어 접속한 사이트에서는 찾을 수 없다.
// const price = await page.$eval("body > table.type2 > tbody > tr:nth-child(3) > td:nth-child(2)", el=>el.textContent)
const date = await framePage.$eval(`body > table.type2 > tbody > tr:nth-child(${i}) > td:nth-child(1) > span`, el => el.textContent)
const price = await framePage.$eval(`body > table.type2 > tbody > tr:nth-child(${i}) > td:nth-child(2)`, el => el.textContent)
console.log(`날짜: ${date} 가격: ${price}`)
}
//browser닫기
await browser.close()
}
startCrawling()
これはネイバー株から三星電子情報を入手したソースコードで、中間的に遅延を与えた.また、iframeを使用する場所であれば、単独で処理すべきです.接続されたサイトに基づいてデータを検索し、iframeは他のブラウザを解放しているため、見つかりません.の最後の部分
今日はブレードジャイロとローラーを試してみました.時間や場所の制限がなく、パソコンが私の代わりに欲しい情報を手に入れることができるのが魅力的です.しかし、他人に迷惑をかけないように、よく使うべきらしい.
Reference
この問題について(day09), 我々は、より多くの情報をここで見つけました https://velog.io/@antipiebse/day09テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol