Python实战:解决了小程序抓包返回400状态码问题
发布网友
发布时间:2024-09-24 13:31
我来回答
共1个回答
热心网友
时间:2024-09-24 22:05
在深入研究微信小程序时,我尝试通过 MannerCoffee 下单小程序获取数据接口。但在使用 Python 的 request 库进行爬取数据时,遇到了在调用接口时返回 400 错误的问题。在使用 Reqable 进行抓包后,发现接口可以正常运行,这让我感到困惑。代码没有明显问题,但返回状态码始终是 400。
经过一番查找资料,我找到了问题的关键:请求的 headers 中的 Content-type 需要从 "application/json" 改为 "json"。在进行这一修改后,请求顺利返回了数据,状态码变为 200,问题得以解决。
接口调通后,我便能够直接调用小程序接口,获取城市列表和门店列表。经过分析,我找到了城市接口的 URL 为:https://triangle.wearemanner.com/mp-api/v1/areas/tree?isContainsCountry=false。而门店接口 URL 为:https://triangle.wearemanner.com/mp-api/v1/shops?isCompact=true&areaCode=320200&level=4。在门店 URL 中,只有 areaCode 是变化参数,可以从城市的响应中获取,从而构造每个城市的门店 URL。
首先,我通过爬虫代码获取到城市列表,并将其保存为 Excel 文件。接着,利用获取到的 areaCode 参数,我构造了门店接口的 URL,通过爬虫代码获取每个城市的门店,并将数据保存为 Excel 文件。最后,将全国的门店数据整合,生成了一个完整的 Excel 文件。整个过程在 PyCharm 控制台运行,耗时约 3 分钟,完成 56 次请求,成功获取到了全国 1109 个门店。
获取到的数据被分别保存为每个城市的独立 Excel 文件和一个全国汇总的 Excel 文件。在生成每个 Excel 文件前,我通过代码对数据进行了排序和重命名,确保了数据的组织结构。完整代码已被整理出来,可用于执行此任务。
总结而言,解决编程中遇到的问题需要耐心地查找资料和不断尝试。通过本文分享的经验,希望能帮助到有类似需求的读者。文章首发在“程序员coding”公众号,欢迎关注并与我一同探讨学习。数据集已上传至公众号,后台回复“Manner Coffee”即可获取。