1

Google で特定の日付範囲内のヒット数をスクレイピングするコードを作成しようとしています。日付を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

たとえば、生成されるリンクの 1 つが次のとおりです。

日付範囲「2015 年 3 月 9 日から 2015 年 3 月 13 日」で「負債」を Google 検索

生成されるヒット数: 39,700,000

しかし、代わりに、293,000,000 を吐き出します (これは、一般的な検索で生成されるものです)。

4

1 に答える 1