我对网络抓取很陌生。我正在尝试通过对请求进行逆向工程并抓取数据来获取产品的 Flipkart 卖家的数据。我正在尝试的 URL 是:https : //www.flipkart.com/sellers?pid=HSAFFJWT2WUYHHHX,其中包含特定产品的卖家列表。当我在 Google chrome 中打开网络选项卡时,我可以看到它向:https : //www.flipkart.com/api/3/page/dynamic/product-sellers发出 POST 请求,请求负载为: {"requestContext":{"productId":"HSAFFJWT2WUYHHHX"},"locationContext":{"pincode":"110092"}}我正在我的代码中复制浏览器已发送的请求标头和有效负载,但我收到的是 403 Forbidden 消息,而不是有效的 JSON 数据。或者,我已经成功地使用Selenium打开此页面(https://www.flipkart.com/sellers?pid=HSAFFJWT2WUYHHHX),然后使用Beautiful Soup解析卖家数据。但是,硒非常非常慢。这就是为什么我试图直接获取 json,它在此页面上动态填充卖家数据。我试过从我的代码和邮递员发出帖子请求,但没有运气。import requestsimport jsonheaders = { 'Accept': '*/*', 'Accept-Encoding': 'gzip, deflate, br', 'Accept-Language': 'en-US,en;q=0.9', 'Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3', 'Connection': 'keep-alive', 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36', 'Referer' : 'https://www.flipkart.com/sellers?pid=HSAFFJWT2WUYHHHX', 'Content-Type': 'application/json', 'Origin': 'https://www.flipkart.com', 'Host': 'www.flipkart.com', 'Pragma': 'no-cache' }url = "https://www.flipkart.com/api/3/page/dynamic/product-sellers"payLoad = {"requestContext":{"productId":"HSAFFJWT2WUYHHHX"},"locationContext":{"pincode":"001195"}}response = requests.post(url,headers = headers,data = json.dumps(payLoad))print(response.status_code,response.reason)print(response.text)print(response.request.headers)但是我收到了 403 Forbidden。即使该页面不需要用户登录。也许有一些 api 期望我没有提供的安全令牌,这就是它抛出 403 Forbidden 的原因。谁能帮我弄清楚我缺少什么才能获得 Json?
添加回答
举报
0/150
提交
取消