【问题标题】:How to scrape Google Shopping with location parameters如何使用位置参数抓取 Google 购物
【发布时间】:2020-08-21 02:45:33
【问题描述】:

我正在尝试使用 Scrapy 抓取 Google 购物。

start_urlhttps://www.google.com/search?q={}&tbm=shop

我将关键短语注入上述 URL,例如“cement+50+kg”。

但我想在不同的国家运行搜索 - 例如,查找美国的水泥价格。我如何做到这一点?

我正在手动尝试此操作以查看 URL 是否更改:

  1. 在高级搜索中更改了区域 - 添加了搜索查询参数,但搜索结果没有相应更改。
  2. 在搜索设置中更改了搜索国家 - 结果来自国家,但我无法确定 URL 中的查询参数。

另外,我只在很小的范围内完成了这项工作,因此我将非常感谢我在使用 Google 购物时可能遇到的任何有关阻塞、代码更改等问题的提示。

使用 Scrapy 是否有任何主要障碍?我应该改用 Selenium 吗?

【问题讨论】:

  • 这是否可以通过 Google 搜索 URL 进行管理?

标签: python web-scraping scrapy google-shopping


【解决方案1】:

Google 使用uule 参数来传递位置数据。它用于将地点或确切位置(经纬度)编码为 cookie、url 或 http 标头中使用的值。

美国 == w+CAIQICINVW5pdGVkIFN0YXRlcw

您可以在此处阅读更多信息:https://valentin.app/uule.html

还有像 SerpApi 这样的第三方解决方案。这是一个免费试用的付费 API。我们为您处理代理、解决验证码并解析所有丰富的结构化数据。

示例 python 代码(其他库中也有):

from serpapi import GoogleSearch

params = {
  "engine": "google",
  "q": "cement 50 kg",
  "google_domain": "google.com",
  "gl": "us",
  "hl": "en",
  "location": "United States",
  "tbm": "shop",
  "api_key": "secret_api_key"
}

search = GoogleSearch(params)
results = search.get_dict()

示例 JSON 输出:

"shopping_results": [
  {
    "position": 1,
    "title": "Wholesale 50kg cement bag,1 Piece",
    "link": "https://www.google.com/aclk?sa=L&ai=DChcSEwjqsIfOgpjxAhUFbW8EHfIcBvwYABAFGgJqZg&sig=AOD64_2lxrIvhKl-jSkU_uwbVdMtfbIxgA&ctype=5&q=&ved=0ahUKEwjlnYPOgpjxAhUQLKwKHeHWDl8QgeUECIcD&adurl=",
    "source": "Alibaba.com",
    "price": "$0.25",
    "extracted_price": 0.25,
    "snippet": "Trade Assurance, No Shipping Fee | Alibaba.com",
    "thumbnail": "https://serpapi.com/searches/60c7c3ad5119a69d2314814b/images/2d5510b1cc7c1a7a51a1f0d85a2f131f55c541b3ee95bfa73a7e6df83daac97a.jpeg"
  },
  {
    "position": 2,
    "title": "Riverside Plastic 94 Lb/bag Cement",
    "link": "https://www.google.com/aclk?sa=L&ai=DChcSEwjqsIfOgpjxAhUFbW8EHfIcBvwYABAEGgJqZg&sig=AOD64_1UioDhoruBK2KZZM9lpo6EC9DAxA&ctype=5&q=&ved=0ahUKEwjlnYPOgpjxAhUQLKwKHeHWDl8QgeUECJMD&adurl=",
    "source": "WhiteCap.com",
    "price": "$15.89",
    "extracted_price": 15.89,
    "snippet": "Riverside cement plastic cement, 94 lb, bag container, ASTM C1328, for making mortar, plaster and stucco. | Riverside Plastic ...",
    "thumbnail": "https://serpapi.com/searches/60c7c3ad5119a69d2314814b/images/2d5510b1cc7c1a7a51a1f0d85a2f131f981e26eb8236be3e014b2e90eb4fb4e1.jpeg"
  },
  ...
]

查看documentation了解更多详情。

免责声明:我在 SerpApi 工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-01
    • 2016-04-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多