python - 使用非 JSON 格式的表单数据抓取 ajax 调用
问题描述
我的 Python 经验有限,正在尝试抓取一个使用 ajax 调用的网站。我尝试按照不同网站上提供的示例进行操作,但还没有成功,很可能是因为我的 ajax 调用的表单数据未格式化为 JSON。
在这种情况下,ajax 调用具有以下格式的表单数据:
filters[targetValueMin]: 0
filters[targetValueMax]: 15000000
filters[interestRateMin]: 0
filters[interestRateMax]: 20
filters[loanTermMin]: 0
filters[loanTermMax]: 240
filters[platforms]:
filters[financingTypes]:
filters[developmentPhases]:
filters[investmentPurposes]:
因此我的问题是:我怎样才能抓取来自这个 ajax 调用的内容?
可以通过转到https://www.crowdfundmarkt.nl/crowdfundingprojecten并调整左侧的过滤器之一来重新创建 ajax 调用。
解决方案
选中在请求文档中发出POST 请求以发送表单 URL 编码的数据。然后解析json结果:
import requests
payload = {
'filters[routeName]' : 'projects_list',
'filters[pageNr]' : '1',
'filters[funded]' : '1',
'filters[targetValueMin]' : '0',
'filters[targetValueMax]' : '15000000',
'filters[interestRateMin]' : '0',
'filters[interestRateMax]' : '20',
'filters[loanTermMin]' : '0',
'filters[loanTermMax]' : '240',
'filters[platforms]' : '',
'filters[financingTypes]' : '',
'filters[developmentPhases]' : '',
'filters[investmentPurposes]' : '',
'filters[businessEntities]' : '',
'filters[states]' : '',
'filters[sectors]' : '',
'filters[search]' : ''
}
r = requests.post("https://www.crowdfundmarkt.nl/crowdfundingprojecten/ajax-fetch", data=payload)
print r.json()
推荐阅读
- javascript - JavaScript 正则表达式无法按预期工作
- hibernate - 使用休眠@query获取半径内的位置
- reactjs - React Router - 如果默认语言在 URL 中,则重定向到路由
- html - 在 Html 文档中单击具有相似类名称的元素中的一个元素(按钮)
- dart - Dart,将字符串十六进制转换为常量颜色
- gcc - 64 位内核奇怪的行为
- bash - sed 转义:xpath 的单引号
- python - 如何在 python 中简单地使用 for
- reactjs - 错误发生意外错误:“EBUSY:资源繁忙或锁定,尝试安装装饰器时取消链接
- shopify - 如何将所有 Shopify 产品链接中的“-”更改为“+”