크롤링하기

세피·2021년 9월 3일
0

파이썬

목록 보기
2/2

크롤링 시작

처음 해본곳은 다음뉴스

다음뉴스 크롤링

네이버뉴스를 해보고 싶었으나 권한문제로 할 수 없었다.

내가 가져오고 싶은 정보?

  1. 랭킹뉴스 1~10위 기사 타이틀만 가져오기
  2. 원하는 뉴스 타이틀과 본문 가져오기
import requests
from bs4 import BeautifulSoup

webpage = requests.get("https://news.daum.net/ranking/popular")
soup = BeautifulSoup(webpage.text, "html.parser")

for x in range(0, 20, 2):
    title = soup.select(".link_txt")[x].get_text()
    print(title)
print("===========================")
webpage2 = requests.get("https://news.v.daum.net/v/20210608151412944")
soup2 = BeautifulSoup(webpage2.content, "html.parser")
content2 = soup2.select('p')

for el in soup2.find_all('p', attrs={'dmcf-ptype': 'general'}):
    txt = el.get_text()
    print(txt)

다음으로 해본 곳은 해외뉴스 cnet

cnet 크롤링

  1. cnet 에 있는 THE LATEST 5개 가져오기
  2. 대신 제목/부제목/본문만 구분해서 가져올 것
import requests
from bs4 import BeautifulSoup


webpage = requests.get("https://www.cnet.com/news/")
soup = BeautifulSoup(webpage.content, "html.parser")
title = soup.find(class_ = "fdListingContainer")
templist=[]
url = title.find_all('a',attrs={'class':'assetHed'})

for a in url:
    href = a.attrs['href']
    templist.append(href)

for x in range(0,10):
    titles = title.select(".assetHed")[x].get_text()
    if x%2 == 0 :
        print("title : " +titles.lstrip())
    else:
        print("sub_title : "+titles.lstrip())
        webpage2 = requests.get("https://www.cnet.com" + templist[x])
        soup2 = BeautifulSoup(webpage2.content, "html.parser")
        soup3 = soup2.select("#article-body > div.col-7.article-main-body.row > p")
        print("content")
        for j in soup3:
            if j.text.startswith("Read more:"):
                continue
            else:
                print(j.text)
        print("="*20)

크롤링 하며 느낀 것

  1. 원하는 태그를 가져오는건 생각보다 어려웠다.
  2. 자꾸 re 정규식을 사용해 원하지 않는 내용들을 지우려 했다. (그저 태그만 잘 가져오면 정규식은 필요없다)
  3. 파이썬을 처음 접해봤는데 tab의 중요성을 알게되었다.
  4. selenium 이란 것도 알게되었는데 크롬을 자꾸 키는게 너무 오래 걸려서 패스했다.
  5. find와 find_all의 차이점을 알아야한다.

profile
세피의 블로그입니다

0개의 댓글