scrapy - AjaxMethod不可用

2024-10-02 02:29:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图练习学习刮刮网页爬行和使用分类汽车网站的主题,以检查到对策。我知道X-AjaxPro-Method是存在的,因为Chrome开发工具显示了传递的头和接收到的正确响应。但是当在ScrapyShell中完成时,我得到“这个方法要么没有用AjaxMethod标记,要么不可用。”

下面是使用的shell命令:

>>> from scrapy.http import FormRequest

>>> 
request=FormRequest(url='https://www.carwale.com/ajaxpro/CarwaleAjax.AjaxClassifiedBuyer,Carwale.ashx',headers={"X-AjaxPro-Method":"ProcessUsedCarPurchaseInquiry","Content-Type":"application/x-www-form-urlencoded; charset=UTF-8","X-Requested-With":"XMLHttpRequest"},formdata={"profileId":"D1249107","buyerName":"","buyerEmail":"","buyerMobile":"9938223299","carModel":"","makeYear":"","pageUrl":"https://www.carwale.com/used/cars-in-karnal/chevrolet-enjoy-d1249107/?rk","isP":"False","transToken":"","ltsrc":"","buyerSourceId":"4","comments":"","cwc":"buJNfItyQKBP8a3OahoJsOOmg","utma":"\"52149691.1076750176.1492103717.1492447801.1492447801.8\"","utmz":"\"52149691.1492103720.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)\"","originId":"3","isFromCaptcha":"","isGSDClick":"","isRecommended":"","isCertificationDownload":""})

>>> fetch(request)
2017-04-18 08:45:32 [scrapy.core.engine] DEBUG: Crawled (200) <POST https://www.carwale.com/ajaxpro/CarwaleAjax.AjaxClassifiedBuyerCarwale,Carwale.ashx> (referer: None)

>>> print(response.body)
{"error":{"Message":"This method is either not marked with an AjaxMethod or is not available.","Type":"System.NotSupportedException"}}

>>>

原始页面位于https://www.carwale.com/used/cars-in-karnal/chevrolet-enjoy-d1249107/?rk=69&isP=false,必须输入手机号码才能获得“卖家详细信息”

所以,我已经挖了一点进一步,并将分享一些更多的信息。我已经能够使用浏览器中的开发人员工具将XHR导出为curl命令,然后对其进行了精简,以便在我看来,唯一需要的头是X-AjaxPro-Method,因为curl命令只处理该头和数据。你知道吗

还可以使用Python请求库工作。你知道吗


Tags: https命令comrequestwwwmethodscrapyformrequest
1条回答
网友
1楼 · 发布于 2024-10-02 02:29:30

将您发布的请求数据与我在Firebug中看到的数据进行比较,我怀疑您的请求中至少缺少其中一个数据:

所有这些ajax支持的站点carwale.com有很多活动部件,是不太好的对象“开始学习刮痧”

PS:使用FormRequest的更好方法是执行request = FormRequest.from_response(response_with_form_page, ...)。这在大多数表单上运行良好,因为scrapy将自动从表单页面提取所有隐藏的POST参数。有关详细信息,请参见:https://doc.scrapy.org/en/latest/topics/request-response.html#scrapy.http.FormRequest.from_response

相关问题 更多 >

    热门问题