我正试图编写一个python/scray脚本来获取来自https://www.donedeal.ie/search/search?section=cars&adType=forsale&source=&sort=relevance%20desc&max=30&start=0的广告列表,我对获取单个广告的url感兴趣。我发现page正在向https://www.donedeal.ie/search/api/v3/find/发出XHR POST请求。 试着写一个破壳脚本来试试我的想法:
from scrapy.http import FormRequest
url = 'https://www.donedeal.ie/search/api/v3/find/'
payload = {'section': "cars", 'adType': "forsale", 'source': "", 'sort': "relevance desc", 'area': '', 'max': '30', 'start':'0'}
req = FormRequest(url, formdata=payload)
fetch(req)
但我没有得到回应。在Chrome开发工具中,我看到这样的请求给出了一个带有条目id的json响应,我可以用它来自己形成url。在
我也尝试过Selenium方法,它给页面时间来加载动态内容,但这似乎也不起作用。在这个阶段完全迷失了:(
问题在于呼叫,有效载荷几乎正常。在
您要清理的站点只接受JSON作为有效负载,因此您应该将
FormRequest
更改为如下所示:这是因为
FormRequest
用于模拟HTML表单(内容类型设置为application/x-www-form-urlencoded
),而不是JSON调用。在我不能用Scrapy创建一个有效的例子。在
不过,我确实为你想出了另外两个解决方案。在
在下面的示例中,response包含JSON数据。在
工作示例1使用^{
} 对Python2.7.10和3.3.5和3.5.0
^{pr2}$工作示例2使用^{
相关问题 更多 >
编程相关推荐