1.Scraping
- 다른 사이트 정보를 한번만 가져온다!
- scraping을 도와주는 node.js 라이브러리 => cheerio!!
og(opengrahp)
를 가져오는데 많이 사용
- meta태그 속 property속성이 og인 태그들의 내용을 가져오는 방식
import axios from "axios"
import cheerio from "cheerio"
async function createBoardAPI(mydata){
const targetURL = mydata.contents.split(" ").filter((el) => el.startsWith("http"))[0]
console.log(targetURL)
const aaa = await axios.get(targetURL)
const $ = cheerio.load(aaa.data)
$("meta").each((_,ele) => {
if($(ele).attr('property')){
const key = $(ele).attr('property').split(":")[1]
const value = $(ele).attr('content')
console.log(key,value)
}
})
}
const frontendData = {
title: "안녕하세요~~",
contents: "여기 정말 좋은거 같아요 한번 꼭 놀러오세요!! 여기가 어디냐면 https://naver.com 입니다~~!!"
}
createBoardAPI(frontendData)
2.Crawling
- 다른 사이트 정보를 꾸준히 가져온다!
- crawling을 도와주는 node.js 라이브러리 => puppeteer!!
- 크롤링 가능 여부
사이트주소/robots.txt
(= 크롤링여부 가이드 문서)로 확인 가능
- 크롤링 할 홈페이지에서 가져오고 싶은 내용을
copy selector
를 이용해 복사해옴
개발자도구-element에서 해당 내용을 오른쪽클릭하면 copy할 수 있음
import puppeteer from "puppeteer"
async function startCrawling(){
const browser = await puppeteer.launch({headless:false})
const page = await browser.newPage()
page.setViewport({width:1280, height:720})
await page.goto("https://www.goodchoice.kr/product/search/2")
await page.waitForTimeout(1000)
const stage = await page.$eval(
"#poduct_list_area > li:nth-child(3) > a > div > div.name > div > span",
(el) => el.textContent
)
await page.waitForTimeout(1000)
const location = await page.$eval(
"#poduct_list_area > li:nth-child(3) > a > div > div.name > p:nth-child(4)",
(el) => el.textContent
)
await page.waitForTimeout(1000)
const price = await page.$eval(
"#poduct_list_area > li:nth-child(3) > a > div > div.price > p > b",
(el) => el.textContent
)
await page.waitForTimeout(1000)
console.log(stage)
console.log(location.trim())
console.log(price)
await browser.close()
}
startCrawling()
공부하며 작성하고 있는 블로그입니다.
잘못된 내용이 있을 수 있으며 혹시 있다면 댓글 달아주시면 감사하겠습니다
😊