Python Google搜索:日期范围内的点击数不准确

时间:2015-03-14 19:06:04

标签: python search google-search date-range hit-count

我一直在尝试编写代码来刮取谷歌特定日期范围内的点击次数。我通过在Google搜索查询中插入日期来完成此操作。当我复制并粘贴它产生的链接时,它会给我正确的查询,但是当代码运行它时,我会不断获得没有日期范围的搜索命中数。我不确定我在这里做错了什么。

from bs4 import BeautifulSoup
import requests
import re
from datetime import date, timedelta


day = date.today()
friday = day - timedelta(days=day.weekday() + 3) + timedelta(days=7)

word = "debt"

for n in range(0,32,7):
    date_end = friday - timedelta(days=n)
    date_beg = date_end - timedelta(days=4)

    link_beg = "https://www.google.com/search?q=%s&source=lnt&tbs=cdr%%3A1%%2Ccd_min%%3A" % (word)
    link_date = "%s%%2F%s%%2F%s%%2Ccd_max%%3A%s%%2F%s%%2F%s&tbm=&gws_rd=ssl" % (str(date_beg.month),str(date_beg.day),str(date_beg.year),str(date_end.month),str(date_end.day),str(date_end.year))

    url = link_beg + link_date

    print url,
    print "\t",
    r = requests.get(url)

    soup = BeautifulSoup(r.content)

    products = soup.findAll("div", id = "resultStats")

    result = str(products[0])
    results = re.findall(r'\d+', result)

    number = ''.join([str(i) for i in results])

    print number

例如,生成的链接之一是:

Google Search for "debt" in date range "3/9/2015 to 3/13/2015"

产生的命中率应为:39,700,000

但相反,它吐出:293,000,000(这只是一般搜索产生的)

1 个答案:

答案 0 :(得分:0)

Google的日期范围限制搜索依赖于朱利安日期 - 即必须以朱利安命名法指定范围。也许你已经意识到了这一点。

可爱的小猫日期范围:[一些朱利安日期] - [另一个朱利安日期](没有括号)。

有些网页可以转换为Julian,或者使用jDate Python脚本或jday shell脚本。