python - 尝试抓取 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
,因为那是输入的名称。谢谢
解决方案
不能保证,因为这个答案是一些简短实验的结果,但我可能已经找到了解决方案。
我在网站上四处逛逛,发现当我重新加载页面时,询问您的邮政编码/电子邮件的初始屏幕被跳过了。然后我删除了会话 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
错误消息。
希望这可以帮助!
推荐阅读
- javascript - 如何将 png 图标导入 JavaScript 文件?
- java - java多线程中的线程安全
- python - 访问嵌套列表的元素
- python - 在 x 轴上绘制单个日期
- c - 为什么 CFStringCreateArrayBySeparatingStrings 不创建 CFStringRef 值项?
- linux - 使用 GNU 日期获取当前一周中特定日期的完整日期
- javascript - d3.js - 根据子 d.data.type 将链接颜色更改为子节点
- typescript - 使用 Array.prototype.filter() 类型缩小数组
- caching - 我们如何计算这段代码片段中缓存的读取/未命中数?
- promise - 使用 ReactPHP 为带有流体的响应编写承诺的正确方法