【发布时间】:2021-10-08 17:24:33
【问题描述】:
我找不到任何解决我遇到的问题的方法。
我想从https://www.armadarealestate.com/Inventory.aspx抓取 JSON 文件
当我进入网络并选择从中加载 JSON 的 url 时,我只是被发送到另一个 HTML 页面,但响应部分说它包含有关我需要的属性的信息。
那么如何从网站中提取 JSON 文件?
import json
import requests
resp = requests.get(url='https://buildout.com/plugins/3e0f3893dc334368bb1ee6274ad5fd7b546414e9/inventory?utf8=%E2%9C%93&page=-3&brandingId=&searchText=&q%5Bsale_or_lease_eq%5D=&q%5Bs%5D%5B%5D=&viewType=list&q%5Btype_eq_any%5D%5B%5D=2&q%5Btype_eq_any%5D%5B%5D=5&q%5Btype_eq_any%5D%5B%5D=1&q%5Bcity_eq%5D=')
print(json.loads(resp.text))
JSONDecodeError: Expecting value: line 1 column 1 (char 0)
事实上,当我拉取属于 JSON 文件的请求时,我会从“https://buildout.com/plugins/3e0f3893dc334368bb1ee6274ad5fd7b546414e9/inventory?utf8=%E2%9C%93&page= 0&brandingId=&searchText=&q%5Bsale_or_lease_eq%5D=&q%5Bs%5D%5B%5D=&viewType=list&q%5Btype_eq_any%5D%5B%5D=2&q%5Btype_eq_any%5D%5B%5D=5&q%5Btype_eq_any%5D%5B% 5D=1&q%5Bcity_eq%5D=' 这是一个html文件。
我该如何解决这个问题?
【问题讨论】:
-
404,你确定这个网址是好的吗?
-
是的,抱歉,我认为该网址现在应该可以使用了。
-
我尝试添加 headers={'content-type' : 'application/json; charset=utf-8'} 到请求,但它仍然获得 HTML。
-
许多 REST API 根据通知的标头返回不同的格式;尝试查看他们的 API 文档(如果可用),或者,如果您可以访问工作页面,请尝试使用浏览器调试工具的“网络”查看正在发送的标头。
-
通过向您的请求添加用户代理重试...可能是 firefox、chrome 之一...否则您发送请求默认值,服务器可能不喜欢刮板!在这里查看stackoverflow.com/questions/68633248/… 和用户代理 'Mozilla/5.0 (X11; Linux x86_64; rv:89.0) Gecko/20100101 Firefox/88.0'
标签: python json web-scraping python-requests scrapy