inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)

실제로 가져오는 뉴스 자료가 적은데 왜 이럴까요?

302

손기락

작성한 질문수 1

0

#사용자입력 keyword = pyautogui.prompt("검색어를 입력하세요") lastpage = int(pyautogui.prompt("몇 페이지까지 크롤링 할까요?")) page_num = 1 for i in range(1, lastpage * 10, 10): print(f"{page_num}페이지 크롤링 중입니다=========================") response = requests.get(f"https://search.naver.com/search.naver?where=news&query=%ED%97%88%EA%B0%9C%EC%97%B4&sm=tab_opt&sort=1&photo=0&field=0&pd=0&ds=&de=&docid=&related=0&mynews=0&office_type=0&office_section_code=0&news_office_checked=&nso=so%3Add%2Cp%3Aall&is_sug_officeid=0={keyword}&start={i}") html = response.text soup = BeautifulSoup(html, 'html.parser') articles = soup.select("div.info_group") # 뉴스 기사 div 10 for article in articles: links = article.select("a.info") # 리스트 if len(links) >= 2: # 링크가 2개 이상이면 url = links[1].attrs['href'] # 두번째 링크의 href를 추출 response = requests.get(url, headers={'User-agent':'Mozila/5.0'}) html = response.text soup = BeautifulSoup(html, 'html.parser') # 만약 연예 뉴스라면 if "entertain" in response.url: title = soup.select_one(".end_tit") content = soup.select_one("#articeBody") elif "sports" in response.url: title = soup.select_one("h4.title") content = soup.select_one("#newsEndContents") #본문 내용에 불필요한 내용 삭제 divs = content.select("div") for div in divs: div.decompose() paragraphs = content.select("p") for p in paragraphs: p.decompose() else: title = soup.select_one("#articleTitle") content = soup.select_one("#articleBodyContents") print("=======링크========\n", url) print("=======제목========\n", title.text.strip()) print("=======본문========\n", content.text.strip()) time.sleep(0.3) page_num = page_num + 1
 
 
이렇게 한 다음 뉴스는 3페이지까지 가져오기했는데 1페이지에서 4개 2, 3페이지 각각 1개정 가져오네요 ㅠㅜ

python 웹-크롤링

답변 1

0

스타트코딩

음,, 지금 코드는 잘 확인이 안되네요.

 

기락님이 원하는 키워드로 검색을 했을 때 

네이버 뉴스에 등록된 기사의 개수가

페이지에서 4개 2, 3페이지 각각 1개 일 수가 있습니다.

직접 검색했을 때 vs 크롤링 했을 때 

네이버 뉴스에 등록된 기사 확인해 보시고요. 

 

다른 키워드로도 검색해 보시길 바랍니다.

(그리고 오타일 수 있으니 다시 한번 소스코드를 지우고 새로 따라서 쳐 보세요!)

 

0

손기락

일단 천천히 다시 해보겠습니다. 그리고 뉴스 기사를 최신순으로 가져오고 싶은데 이건 어떻게 하나요?

 

아 네이버 뉴스라고 나와있는건 다 나오네요 ㅠㅜ 감사합니다! 많이 배워가요

0

스타트코딩

자 이것도 스스로 해결해 봅시다. 

제가 바로바로 해결책을 알려드리면 실력이 늘지 않아요.

 

여기 관련도순, 최신순, 오래된순으로 정렬을 할 수 있는 옵션창이 있습니다.

옵션을 변경해 보면서 사이트 주소값이 어떻게 바뀌는지 관찰해 보세요.

바뀌는 파라미터가 정렬을 지정하는 값입니다. 

셀레니움 환경설정 오류

0

46

2

네이버 로그인 관련

0

256

2

안녕하세요 셀레니움에 대해서 질문

0

85

1

크롤링 연습사이트 문의

0

96

2

선택자 질문

0

71

2

'특정 요소가 나타날 때까지 스크롤' 부분 에러

0

76

2

자동 로그인 질문

0

86

2

44강 제목, 링크

0

105

1

원하는 값이 없을 때

0

89

2

크롤링한 링크가 엑셀로 들어가면 작동이 안되요

0

227

2

셀레니움 PDF자료는 받을 수 있나요

0

100

2

글목록 추출하기

0

97

2

메일 자동화 로그인 중복방지문자해결 오류 및 명시적 대기 질문

0

88

2

강의 노트가 어디에 있는건가요?

0

80

2

강의 커리큘럼 질문

0

98

1

조건문 else 사용하지 않는 이유

0

76

2

셀레니움으로 접근할 수 없는 경우

0

95

2

웹페이지 변경

0

70

2

자바스크립트로 태그 선택 시 질문입니다.

1

64

2

수료증은 어떻게 받나요?

0

120

2

class명을 활용하여 선택자를 만들지 않는 경우..?

0

60

2

드라이버가 안 열려요

0

79

2

이거 해결방법 아시는 분?

0

121

2

네이버 지식인 크롤링..

0

201

2