问题描述
我正在尝试使用 Scrapy 抓取Google购物。
start_url
是https://www.google.com/search?q={}&tbm=shop
我正在将关键字短语注入上述URL,例如“ cement+50+kg
”。
但是我想在不同的国家进行搜索-例如,查找美国的水泥价格。我该如何实现?
我正在手动尝试此操作,以查看URL是否更改:
此外,我只是在很小的范围内完成此操作,因此,如果遇到任何有关阻止,代码更改等问题,我在Google购物中可能会遇到的问题,将深表感谢。
使用Scrapy是否有主要障碍?我应该改用硒吗?
解决方法
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 工作。