python - 用 python 抓取谷歌新闻

标签 python web-scraping google-news

我正在为不同的新闻媒体创建一个网络抓取工具,对于纽约时报和卫报来说这很容易,因为他们有自己的 API。

现在,我想从这份报纸 GulfTimes.com 中抓取结果。他们的网站不提供高级搜索,所以我求助于谷歌新闻。但是,Google 新闻 Api 已被弃用。我想要的是从高级搜索中检索结果的数量,例如关键字 =“埃及”和 begin_date="10/02/2011"和 end_date="10/05/2011"。

这在 Google News UI 中是可行的,只需将源作为“海湾时报”和相应的查询和日期,然后简单地手动计算结果的数量,但是当我尝试使用 python 执行此操作时,出现 403 错误这是可以理解的。

关于如何执行此操作的任何想法?或者除了谷歌新闻之外还有其他服务可以让我这样做吗?请记住,我会同时发出近 500 个请求。

import json
import urllib2
import cookielib
import re
from bs4 import BeautifulSoup


def run():
   Query = "Egypt"
   Month = "3"
   FromDay = "2"
   ToDay = "4"
   Year = "13"
   url='https://www.google.com/search?pz=1&cf=all&ned=us&hl=en&tbm=nws&gl=us&as_q='+Query+'&as_occt=any&as_drrb=b&as_mindate='+Month+'%2F'+FromDay+'%2F'+Year+'&as_maxdate='+Month+'%2F'+ToDay+'%2F'+Year+'&tbs=cdr%3A1%2Ccd_min%3A3%2F1%2F13%2Ccd_max%3A3%2F2%2F13&as_nsrc=Gulf%20Times&authuser=0'
   cj = cookielib.CookieJar()
   opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
   request = urllib2.Request(url)   
   response = opener.open(request)
   htmlFile = BeautifulSoup(response)
   print htmlFile


run()

最佳答案

你可以使用 awesome requests图书馆:

import requests

URL = 'https://www.google.com/search?pz=1&cf=all&ned=us&hl=en&tbm=nws&gl=us&as_q={query}&as_occt=any&as_drrb=b&as_mindate={month}%2F%{from_day}%2F{year}&as_maxdate={month}%2F{to_day}%2F{year}&tbs=cdr%3A1%2Ccd_min%3A3%2F1%2F13%2Ccd_max%3A3%2F2%2F13&as_nsrc=Gulf%20Times&authuser=0'


def run(**params):
    response = requests.get(URL.format(**params))
    print response.content, response.status_code


run(query="Egypt", month=3, from_day=2, to_day=2, year=13)

你会得到 status_code=200。

还有,顺便说一句,看看scrapy项目。没有什么比这个工具更简单的网络抓取了。

关于python - 用 python 抓取谷歌新闻,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15550655/

相关文章:

python - 可暂停素数生成器

python - 字符串是如何比较的?

javascript - Casperjs 单击无法打开 'download csv' 操作系统窗口

javascript - 如何使用 puppeteer 检查 div 是否具有特定的类?

python - 来自 Google 新闻的网络抓取文章

Python:如何为字符串传递一个参数而不是有多个重复值?

python - 是否可以在 postgresql 数据库中插入 python 元组

python - 完美获取python中的所有javascript文件名及其内容

google-search-api - 用于 Google 新闻的 Google 自定义搜索引擎

url - 谷歌新闻 XML API : use country/language parameters