challeng2 - Y-combinator news 데이터 수집하기
ycombinator사이트의 제목과 순위
데이터를 수집하여 출력하는 과제.
이때, 밑에 more 버튼을 누르면 다음 페이지로 넘어갈 수 있는데 이때 발생하는 요청값 규칙을 찾아내어 데이터 수집기를 작성하자.
- 컨테이너 : tr.athing
- 순위 : span.rank
- 제목 선택자 : td.title > a
- url : https://news.ycombinator.com/news?p=1
import requests
from bs4 import BeautifulSoup
for page in range(1, 11):
raw = requests.get("https://news.ycombinator.com/news?p="+str(page),
headers = {"User-Agent" : "Mozilla/5.0"})
html = BeautifulSoup(raw.text, 'html.parser')
titles = html.select("tr.athing")
for ti in titles:
title = ti.select_one("td.title > a").text.strip()
rank = ti.select_one("span.rank").text.strip()
print(title)
print("-"*50)
homework1 - 네이버 e북 데이터 수집하기
네이버 시리즈 e북 인기 TOP100 페이지에서 제목과 저자
데이터를 수집하는 코드를 만들기
- 컨테이너 : ul.lst_thum li
- 제목 : ul.lst_thum li a strong
- 저자 : ul.lst_thum li span.writer
- URL : https://series.naver.com/ebook/top100List.nhn?page=1
import requests
from bs4 import BeautifulSoup
for page in range(1, 6):
raw = requests.get("https://series.naver.com/ebook/top100List.nhn?page="+str(page),
headers = {"User-Agent" : "Mozilla/5.0"})
html = BeautifulSoup(raw.text, 'html.parser')
books = html.select("ul.lst_thum li")
for book in books:
title = book.select_one("ul.lst_thum li a strong").text.strip()
writer = book.select_one("ul.lst_thum li span.writer").text.strip()
print(title, writer, sep = " - ")
print("-"*50)
homework - 다음 뉴스기사 수집하기
다음 뉴스코너 검색어 '코알라'에서 기사제목과 기사요약
데이터를 수집하는 코드를 만들기
참고 : 다음 뉴스 페이지의 경우, 역으로 headrs가 있는 데이터 요청을 크롤링 시도라고 이해한다. 따라서 헤더값을 넣지 않고 수집기를 만들어야 함.
- 컨테이너 : ul#clusterResultUL li
- 제목 : ul#clusterResultUL li div.wrap_tit a
- 요약 : ul#clusterResultUL li p.f_eb.desc
- URL : https://search.daum.net/search?w=news&DA=PGD&enc=utf8&cluster=y&cluster_page=1&q=%EC%BD%94%EC%95%8C%EB%9D%BC&p=1
for page in range(1, 6):
raw = requests.get("https://search.daum.net/search?w=news&DA=PGD&enc=utf8&cluster=y&cluster_page=1&q=%EC%BD%94%EC%95%8C%EB%9D%BC&p="+str(page))
html = BeautifulSoup(raw.text, 'html.parser')
articles = html.select("ul#clusterResultUL li")
for article in articles:
title = article.select_one("ul#clusterResultUL li div.wrap_tit a").text.strip()
summary = article.select_one("ul#clusterResultUL li p.f_eb.desc").text.strip()
print(title)
print("요약 : "+summary+"\n")
print("-"*80)
challenge 1은 귀찮으니 생략합니다..
출처
코알라: https://coalastudy.com
데이터수집 web 공개자료: https://book.coalastudy.com/data_crawling/
반응형
'Data_Analysis' 카테고리의 다른 글
[코알라univ] 5_1. 똑똑하게 데이터 수집하기 (0) | 2019.11.08 |
---|---|
[코알라univ]4. 데이터를 저장하는 방법 (0) | 2019.10.30 |
[코알라univ]3_2. 파이썬으로 데이터 수집하기 (0) | 2019.10.28 |
[코알라univ]3_1. 파이썬으로 데이터 수집하기 (0) | 2019.10.14 |
[코알라univ]2. 데이터수집을 위한 기초 파이썬 (0) | 2019.10.10 |