【发布时间】:2021-04-25 14:29:41
【问题描述】:
我正在尝试从此url 中提取数据。下面是我为完成这项工作而编写的代码。
cookies = {'.AspNetCore.Antiforgery.M6FGfmlbnTQ': 'CfDJ8A-eCRip5cVAs8-wkFU1H8dmFA0OIoxp6pQh1dcRvnpdNHKpKwFF2EhHSg5c-yqb-DriS6AIiwgnIpzyMiiphd42Un2v0-X6l8ePR4KkjG_CR2a_u6qrFOZNrRg0jrhliPOhyV6TKCtu6k-rn92lVMI',
'uCurr': 'EUR'}
header = {'User-Agent': 'APIs-Google (+https://developers.google.com/webmasters/APIs-Google.html)',
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'X-Requested-With': 'XMLHttpRequest'}
formdata = {'query': 'AR-LCAAAAAAAAApNjr0KwkAQhN9l6gvsXn5M1iqohZUSkweImqjgD6LYhLy7c0UgcMUcM7PzDXjBBrSwRByOMHjxGkkWSVKrmggfHE4zR3XunGGxjwuHbhI9LE8K73CZxJXtVblm-ka1aSqqO8znDg-YZqkLGBo7vOmL0m7DYveMmgM_Hx7imS8rWpDzB1swQmqU22q_q-rQCPSBYBlGw0IqzOk4_gFLkZV45QAAAA2',
'discount': 'AG51bGw1',
'__RequestVerificationToken': 'CfDJ8A-eCRip5cVAs8-wkFU1H8fDgaTCPGKJ6FVhqBSItqEvJHfZlsE0bsh4EKYxRKIpb3CDhue0bRj0jOgsLjyHTIvvEolzWwGt1CDfRlgnXrfO8NZiEE3ZQhIyeVShd5-AxG-QhQp4zSE3WeWo7Fr40DI'}
url = 'https://www.carflexi.com/data/getDeals'
In [47]: fetch(scrapy.FormRequest(url, method='POST', headers=header, formdata=formdata,cookies = cookies))
2021-04-25 19:21:11 [scrapy.core.engine] DEBUG: Crawled (200) <POST https://www.carflexi.com/data/getDeals> (referer: None)
问题在于货币参数不起作用。我正在尝试以EUR 获取数据,但它以我的当地货币为我提供了输出。
In [48]: deal = json.loads(response.text).get('result').get('deals')[0]
In [49]: deal.get('priceString')
Out[49]: '57,622'
【问题讨论】:
-
这称为地理围栏。 Web 服务器正在检查连接到它的客户端的 IP 地址,并将其与位于该国家/地区内的已知 IP 范围列表进行比较。您不会获得必须使用 VPN 或代理的欧元货币。如果你想使用代理,我会帮你提供一个免费的 selenium 代理脚本。
-
@MuratDemir 请分享脚本。还有是否可以更改本地计算机的货币/国家来解决这个问题?
-
你可以再用代理来做
-
@MuratDemir 你能分享你的脚本吗?
-
当然让我为你准备
标签: python-3.x web-scraping cookies python-requests scrapy