我正在尝试从 Google 新闻中抓取所有新闻标题(注意:不是通过 news.google.com),条件如下:
一世。关键字,ii。具体日期范围,iii。按日期排序,以及 iv。能够循环浏览页面
This is the link of a regular google search with specified keywords: https://www.google.com/search?q=migrant%2Bcaravans&rlz=1C1GCEA_enUS827US827&sxsrf=ACYBGNT3ExxxPO5PSo9Cgp91M37sVBHLMA:1576086735805&source=lnms&tbm=nws&sa=X&ved=2ahUKEwji9pbQlK7mAhWIxFkKHWDQCCcQ_AUoAXoECBAQAw&biw=1680&bih=939
这是我的 google 的链接,其关键字相同,按日期和日期范围排序: https ://www.google.com/search?q=migrant%2Bcaravans&rlz=1C1GCEA_enUS827US827&tbs=cdr:1,cd_min:1/1/ 2017,cd_max:12/31/2017,sbd:1&tbm=nws&sxsrf=ACYBGNRZjtVzEEfuEKcHjuOYUmubi5pT3g:1576086970386&source=lnt&sa=X&ved=0ahUKEwjc1oTAla7mAhWExVkKHQlVB_YQpwUIIA&biw=1bih=
这是我的代码示例,它能够在没有任何条件的情况下从常规搜索中抓取标题:
def scrape_news_summaries(topic, pagenum=1):
#time.sleep(randint(0, 2))
url = "http://www.google.com/search?q="+topic+"&tbm=nws&dpr=" + str(pagenum)
r = requests.get(url)
if r.status_code != 200:
print('status code for ' + url + ' was ' + str(r.status_code))
sys.exit(-1)
soup = BeautifulSoup(r.text, "html.parser")
return soup
scrape_news_summaries("migrant+caravans")
这是更改 URL 以包含日期范围并按日期对搜索进行排序的代码:
def scrape_news_date_range(query, min_date, max_date, pagenum=1):
url = "https://www.google.com/search?q="+query+"&rlz=1C1GCEA_enUS827US827&tbs=cdr:1,cd_min:"+min_date+",cd_max:"+max_date+",sbd:1&tbm=nws/*,ned=es_sv*/&dpr="+str(pagenum)
r = requests.get(url)
if r.status_code != 200:
print('status code for' + url + 'was' + str(r.status_code))
sys.exit(-1)
soup = BeautifulSoup(r.text, "html.parser")
#return soup
print(soup)
scrape_news_date_range("migrant+caravans", "1/1/2017", "12/1/2017")
而且它似乎没有返回与我想从上面共享的第二个链接中获得的相同内容,而是返回常规搜索的内容。
我非常感谢任何帮助!太感谢了!