Python的要求未从Google新闻中抓取正确的内容

时间:2019-12-11 18:19:05

标签: python web-scraping python-requests google-news

我正在尝试在以下情况下从Google新闻抓取所有新闻标题(注意:不是通过news.google.com):

i。关键字, ii。具体的日期范围 iii。按日期排序,以及 iv。能够遍历页面

这是带有指定关键字的常规google搜索的链接: 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=1680&bih=939&dpr=1

这是我的代码示例,能够在不施加任何条件的情况下从常规搜索中抓取标题:

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")

它似乎并没有返回我想从上面共享的第二个链接中获得的内容,而是返回了常规搜索的内容。

非常感谢您的帮助!非常感谢!

0 个答案:

没有答案