Python으로 Google 뉴스 긁기
19812 단어 webscrapingdatasciencepythontutorial
소개
이 블로그 게시물은 Google의 웹 스크래핑 시리즈의 연속입니다. 여기에서
beautifulsoup
, requests
, lxml
라이브러리와 함께 Python을 사용하여 Google 뉴스 결과를 스크랩하는 방법을 볼 수 있습니다. 대체 API 솔루션이 표시됩니다.수입품
import requests, lxml
from bs4 import BeautifulSoup
from serpapi import GoogleSearch
스크랩 할 것
프로세스
컨테이너, 제목, 링크, 소스, 스니펫, 게시 시간을 선택합니다.
user-agent
를 통과해야 합니다. 왜냐하면 Google이 결국 귀하의 요청을 차단할 수 있고 다른 HTML을 수신하여 빈 출력이 되기 때문입니다. Check what is your user-agent .기본적으로
user-agent
let은 서버와 네트워크 피어가 봇인지 식별할 수 있는 웹 컨텍스트에서 사람(브라우저)을 나타내는 브라우저, 버전 번호 및 호스트 운영 체제를 식별합니다. 그리고 우리는 "실제"사용자 방문을 위장하고 있습니다.암호
import requests, lxml
from bs4 import BeautifulSoup
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.19582"
}
params = {
"q": "gta san andreas",
"hl": "en",
"tbm": "nws",
}
response = requests.get("https://www.google.com/search", headers=headers, params=params)
soup = BeautifulSoup(response.text, 'lxml')
for result in soup.select('.dbsr'):
title = result.select_one('.nDgy9d').text
link = result.a['href']
source = result.select_one('.WF4CUc').text
snippet = result.select_one('.Y3v8qd').text
date_published = result.select_one('.WG9SHc span').text
print(f'{title}\n{link}\n{snippet}\n{date_published}\n{source}\n')
-------------
'''
San Andreas: Cesar & Kendl Is Grand Theft Auto's Best Relationship
https://screenrant.com/gta-san-andreas-cesar-kendl-best-relationship-why/
Many Grand Theft Auto relationships are negative or purely transactional.
That makes Cesar and Kendl's genuine love for each other stand out.
4 hours ago
Screen Rant
'''
페이지 매김이 있는 코드
from bs4 import BeautifulSoup
import requests, urllib.parse, lxml
def paginate(url, previous_url=None):
# Break from infinite recursion
if url == previous_url: return
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)"
"Chrome/72.0.3538.102 Safari/537.36 Edge/18.19582"
}
response = requests.get(url, headers=headers).text
soup = BeautifulSoup(response, 'lxml')
# First page
yield soup
next_page_node = soup.select_one('a#pnnext')
# Stop when there is no next page
if next_page_node is None: return
next_page_url = urllib.parse.urljoin('https://www.google.com/', next_page_node['href'])
# Pages after the first one
yield from paginate(next_page_url, url)
def scrape():
pages = paginate("https://www.google.com/search?hl=en-US&q=gta san andreas&tbm=nws")
for soup in pages:
print(f'Current page: {int(soup.select_one(".YyVfkd").text)}\n')
for result in soup.select('.dbsr'):
title = result.select_one('.nDgy9d').text
link = result.a['href']
source = result.select_one('.WF4CUc').text
snippet = result.select_one('.Y3v8qd').text
date_published = result.select_one('.WG9SHc span').text
print(f'{title}\n{link}\n{snippet}\n{date_published}\n{source}\n')
scrape()
-------------------
'''
Current page: 1
San Andreas: Cesar & Kendl Is Grand Theft Auto's Best Relationship
https://screenrant.com/gta-san-andreas-cesar-kendl-best-relationship-why/
Many Grand Theft Auto relationships are negative or purely transactional.
That makes Cesar and Kendl's genuine love for each other stand out.
4 hours ago
Screen Rant
...
Current page: 8
Il recréé des covers d'album sur "GTA : San Andreas" et c'est ...
https://intrld.com/gtpmagazine-le-magazine-parodique-du-jeu-gta/
On a trouvé LE compte parodique à suivre : Grand Theft Parody, le magazine
qui revisite des pochettes mythiques sur GTA : San Andreas.
2 weeks ago
Interlude
'''
Google 뉴스 결과 API 사용
SerpApi는 무료 요금제가 포함된 유료 API입니다.
이 블로그 게시물에서 일반적으로 작성하는 주요 차이점은
CSS
, XPath
선택기를 수정하거나 Javascript 기반 웹사이트(예: SerpApi가 매력처럼 긁어내는 Google 지도.빠르게 작업하고 더 빠르게 코드를 작성하고 파서를 유지하고 싶지 않다면 API 솔루션이 갈 길이라고 생각합니다.
from serpapi import GoogleSearch
params = {
"api_key": "YOUR_API_KEY",
"engine": "google",
"q": "gta san andreas",
"gl": "us",
"tbm": "nws"
}
search = GoogleSearch(params)
results = search.get_dict()
for result in results['news_results']:
print(result)
------------------
'''
{'position': 1, 'link': 'https://www.sportskeeda.com/gta/5-strange-gta-san-andreas-glitches', 'title': '5 strange GTA San Andreas glitches', 'source': 'Sportskeeda', 'date': '9 hours ago', 'snippet': 'GTA San Andreas has a wide assortment of interesting and strange glitches.', 'thumbnail': 'https://serpapi.com/searches/60e71e1f8b7ed2dfbde7629b/images/1394ee64917c752bdbe711e1e56e90b20906b4761045c01a2cefb327f91d40bb.jpeg'}
'''
페이지 매김을 사용한 Google 뉴스 결과 API
# https://github.com/serpapi/google-search-results-python
from serpapi import GoogleSearch
import os
def scrape():
params = {
"engine": "google",
"q": "coca cola",
"tbm": "nws",
"api_key": "YOUR_API_KEY",
}
search = GoogleSearch(params)
pages = search.pagination()
for result in pages:
print(f"Current page: {result['serpapi_pagination']['current']}")
for news_result in result["news_results"]:
print(f"Title: {news_result['title']}\nLink: {news_result['link']}\n")
scrape()
-------------------
'''
Current page: 1
Title: 5 strange GTA San Andreas glitches
Link: https://www.sportskeeda.com/gta/5-strange-gta-san-andreas-glitches
...
Current page: 14
Title: Ambitious Grand Theft Auto: San Andreas Mod Turns It Into A Spider-Man Game
Link: https://gamerant.com/grand-theft-auto-san-andreas-spider-man-game-mod/
...
'''
연결
Code in the online IDE • Google News Result API
아웃트로
질문이 있거나 제대로 작동하지 않거나 다른 내용을 작성하고 싶은 경우 댓글 섹션이나 Twitter(으)로 자유롭게 의견을 남겨주세요.
당신 것,
Dimitry 및 나머지 SerpApi 팀.
Reference
이 문제에 관하여(Python으로 Google 뉴스 긁기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/dmitryzub/scrape-google-news-with-python-4o14텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)