如何在GoogleScraper中使用时间过滤器进行查询?

时间:2018-11-16 21:00:24

标签: python web-scraping google-search

即使Google的官方API没有在查询结果中提供时间信息-甚至没有对关键字进行时间过滤,高级搜索中都存在时间过滤选项:

Google results for stackoverflow in the last one hour

GoogleScraper库提供了许多与时间相关的灵活选项。如何使用库添加时间功能?

1 个答案:

答案 0 :(得分:0)

经过一番检查,我发现Google将qdr值发送给tbs键的过滤信息(可能是time based search,尽管未正式说明):< / p>

https://www.google.com/search?tbs=qdr:h1&q=stackoverflow

这将获取过去一个小时的结果。 my字母可以分别使用几个月和几年。

此外,要添加按日期排序功能,请同时添加sbd(应为sort by date)值: https://www.google.com/search?tbs=qdr:h1,sbd:1&q=stackoverflow

我能够将这些关键字插入GoogleScraper的BASE Google URL。在get_base_search_url_by_search_engine()中的return方法的末尾(恰好在scraping.py之前)插入以下行:

if("google" in str(specific_base_url)):
    specific_base_url = "https://www.google.com/search?tbs=qdr:{},sbd:1".format(config.get("time_filter", ""))

现在在您的配置中使用time_filter选项:

from GoogleScraper import scrape_with_config

config = {
            'use_own_ip': True,
            'keyword_file': "keywords.txt",
            'search_engines': ['google'],
            'num_pages_for_keyword': 2,
            'scrape_method': 'http',
            "time_filter": "d15" #up to 15 days ago
        }

search = scrape_with_config(config)

结果将仅包括时间范围。此外,结果中的文本片段将具有原始日期信息:

one_sample_result = search.serps[0].links[0]
print(one_sample_result.snippet)
  

4分钟前它必须非常简单-let propertytotalPriceOfOrder =   order.items.map(item => + item.unit * + item.quantity * + item.price);。   顺序是您整个json对象的位置。