데브코스 TIL/Web Scrapping

Web Scraping 기초 2-5. 원하는 요소 가져오기 ||

예니ㅣ 2023. 10. 25. 11:21

강의

"페이지네이션"(Pagination)은 많은 정보를 인덱스로 구분하는 기법 입니다.

# 다음 User-Agent를 추가해봅시다.
user_agent = {"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36"}

# 필요한 라이브러리를 불러온 후, 요청을 진행해봅시다.
import requests
from bs4 import BeautifulSoup

# Pagination이 되어있는 질문 리스트의 제목을 모두 가져와봅시다.
# 과도한 요청을 방지하기 위해 1초마다 요청을 보내봅시다.
import time

for i in range(1, 6):
  rest = requests.get("https://hashcode.co.kr/?page={}".format(i), user_agent)
  soup = BeautifulSoup(res.text, "html.parser")

  questions = soup.find_all("li", "question-list-item")

  for question in questions:
    print(question.find("div", "question").find("div", "top").h4.text)

  time.sleep(0.5)

 

Hashcode 질문 가져오기

https://hashcode.co.kr/

# 다음 User-Agent를 추가해봅시다.
user_agent = {"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36"}

# 필요한 라이브러리를 불러온 후, 요청을 진행해봅시다.
import requests
from bs4 import BeautifulSoup

res = requests.get("https://hashcode.co.kr/", user_agent)

# 응답을 바탕으로 BeautifulSoup 객체를 생성해봅시다.
soup = BeautifulSoup(res.text, "html.parser")

# 질문의 빈도를 체크하는 dict를 만든 후, 빈도를 체크해봅시다.
import time

q_dict = {}

for i in range(1, 6):
  rest = requests.get("https://hashcode.co.kr/?page={}".format(i), user_agent)
  soup = BeautifulSoup(res.text, "html.parser")

  questions = soup.find_all("li", "question-list-item")

  for question in questions:
    q = question.find("div", "question").find("div", "top").h4.text

    if q in q_dict:
      q_dict[q] += 1
    else:
      q_dict[q] = 1

  time.sleep(0.5)

q_dict