首页 > 解决方案 > 尝试抓取 Instacart:Python

问题描述

我在尝试使用 python 中的请求库对 instacart 进行网络抓取时遇到了麻烦。我想跳过要求输入邮政编码的第一个初始页面,然后转到电子邮件页面。这是我的代码:

import requests

session = requests.Session()
data = {"address_line_1":"MYZIPCODE"}
header = {'user-agent': "Mozilla/5.0 (iPhone; CPU iPhone OS 5_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B179 Safari/7534.48.3"}
response = requests.post('https://www.instacart.com/', headers=header, data=data)
print(response.text)

我想知道你们是否可以帮忙。

顺便说一句:我正在使用address_line_1,因为那是输入的名称。谢谢

标签: pythonpython-requests

解决方案


不能保证,因为这个答案是一些简短实验的结果,但我可能已经找到了解决方案。

我在网站上四处逛逛,发现当我重新加载页面时,询问您的邮政编码/电子邮件的初始屏幕被跳过了。然后我删除了会话 cookie,_instacart_session但保留了所有其他 cookie,并被要求再次登录。

这表明如果您使用浏览器手动登录,然后保存_instacart_session生成的 cookie,则可以绕过登录过程。将 cookie 与您在程序中发出的请求一起发送,您也许可以直接跳到http://instacart.com/store/NAME_OF_STORE/storefront.

甚至可能还有另一个 cookie 可以记住您想要的位置,因此也可以绕过该选择屏幕(但我不确定这一点)。


编辑:我看到每个商店的 JSON 信息中列出了交货时间https://www.instacart.com/v3/containers/NAME_OF_STORE/next_gen/retailer_information/content/delivery?source=web,URL 像. 您需要先导航到https://www.instacart.com/store/NAME_OF_STORE/info?tab=delivery设置您的 cookie,否则我会收到一条Unauthorized错误消息。

希望这可以帮助!


推荐阅读