DevSSOM
파이썬 크롤링 실습 - 여러 페이지의 기사 제목 수집하기 본문
반응형
여러 페이지의 기사 제목 수집하기
스포츠동아의 연예부 기사 제목 부분을 크롤링하는 실습.
https://sports.donga.com/ent?p=1&c=02
이 사이트는 URL의 쿼리 부분에서 p의 값에 따라 페이지가 결정됨. 한 페이지에 기사가 20개씩 있기 때문에 p=1이면 1페이지, p=21이면 2페이지와 같은 식으로 페이지마다 20개씩 증가하게 됨.
URL을 문자열의 덧셈 연산으로 만들 수도 있지만, requests.get 함수의 params 매개변수로 쿼리 변수를 추가할 수도 있음. 하지만 이번에는 각 기사로 이동할 수 있는 href를 수집하는 방법을 사용해보기. href는 a 태그의 속성으로 있기 때문에 크롤링된 a 태그에 접근해서 얻을 수 있음. a['href'] 이렇게.
import requests
from bs4 import BeautifulSoup
def crawling(soup) :
# soup 객체에서 추출해야 하는 정보를 찾고 반환
return None
def main() :
answer = []
url = "https://sports.donga.com/ent"
for i in range(0, 5):
req = # requests.get 메소드를 호출
soup = BeautifulSoup(req.text, "html.parser")
answer += crawling(soup)
# crawling 함수의 결과를 출력
print(answer)
if __name__ == "__main__" :
main()
>>>
구글 검사로 HTML을 확인해보면, 기사들의 제목은 <a>태그에 있고, 상위 태그로는 <span class="tit"> 태그, 더 상위 태그로는 <ul class="list_news">가 있음.
def crawling(soup) :
# soup 객체에서 추출해야 하는 정보를 찾고 반환
ul = soup.find("ul", class_="list_news")
for span in ul.find_all("span", class_="tit"):
print(span.get_text())
기사 제목들이 리스트 안에 들어가게 만들어주기 위해서
def crawling(soup) :
# soup 객체에서 추출해야 하는 정보를 찾고 반환
ul = soup.find("ul", class_="list_news")
result = []
for span in ul.find_all("span", class_="tit"):
result.append(span.get_text())
return result
그리고, 페이지마다 p가 20씩 증가하는 쿼리를 적용하기 위해서
req = requests.get(url, params={'p' : i*20+1})
최종 코드
import requests
from bs4 import BeautifulSoup
def crawling(soup) :
# soup 객체에서 추출해야 하는 정보를 찾고 반환
ul = soup.find("ul", class_="list_news")
result = []
for span in ul.find_all("span", class_="tit"):
result.append(span.get_text())
return result
def main() :
answer = []
url = "https://sports.donga.com/ent"
for i in range(0, 5):
req = requests.get(url, params={'p' : i*20+1})
soup = BeautifulSoup(req.text, "html.parser")
answer += crawling(soup)
# crawling 함수의 결과를 출력
print(answer)
if __name__ == "__main__" :
main()
728x90
반응형
'Python > 크롤링' 카테고리의 다른 글
파이썬 크롤링 실습 - 뉴스기사 목록의 내용 수집하기 (0) | 2021.07.01 |
---|---|
파이썬 크롤링 실습 - 네이트 최신뉴스 링크 수집하기 (0) | 2021.06.30 |
파이썬 크롤링 실습 - 뉴스기사 링크 수집하기 (0) | 2021.06.29 |
파이썬 크롤링 - HTML 태그 속성 (0) | 2021.06.27 |
파이썬 크롤링 - 쿼리 개념 (0) | 2021.06.26 |
파이썬 크롤링 - 간단한 실습 : 네이트 판 댓글 수집 (1) | 2021.06.25 |
파이썬 크롤링 - 간단한 실습 : 영화 리뷰 수집 (0) | 2021.06.24 |
댓글