【发布时间】:2020-04-16 15:11:28
【问题描述】:
背景
考虑到这个网址:
base_url = "https://www.olx.bg/ad/sobstvenik-tristaen-kamenitsa-1-CID368-ID81i3H.html"
我想对电话号码进行 ajax 调用:
ajax_url = "https://www.olx.bg/ajax/misc/contact/phone/7XarI/?pt=e3375d9a134f05bbef9e4ad4f2f6d2f3ad704a55f7955c8e3193a1acde6ca02197caf76ffb56977ce61976790a940332147d11808f5f8d9271015c318a9ae729"
想要的结果
如果我在控制台中的 chrome 浏览器中通过网站按下按钮,我会得到想要的结果:
{"value":"088 *****"}
调试
如果我打开一个新标签并粘贴 ajax_url,我总是会得到空值:
{"value":"000 000 000"}
如果我尝试类似:
重击:
wget $ajax_url
Python:
import requests
json_response= requests.get(ajax_url)
我只会收到网站处理页面的 html 有错误。
想法
当我使用浏览器打开请求时,我还有更多内容。我还有什么?也许是饼干?
如何使用 Bash/Python 获得想要的结果?
编辑
响应html的代码是200
我尝试过使用 curl,但遇到了同样的 html 问题。
某种修复。
我注意到,如果我复制浏览器的 cookie,并使用包含来自浏览器的 cookie 的所有标头发出请求,我会得到正确的结果
# I think the most important header is the cookie
headers = DICT_WITH_HEADERS_FROM_BROWSER
json_response= requests.get(next_url,
headers=headers,
)
最后一个问题
剩下的唯一问题是如何通过 Python 脚本生成 cookie?
【问题讨论】:
-
您是否看过 curl 或 Postman,Chrome 插件?这个链接也可以帮助realpython.com/python-json
-
@JGFMK Curl 给了我同样的错误 html 错误,而不是想要的 JSON 输出。我检查了你发给我的链接。如果你有 JSON,它有很好的信息,我的问题是我无法得到 JSON。我现在会检查其余的
-
嗯,这是什么错误?
-
@Iguananaut 我将进行编辑而不是返回 JSON 结构,它会返回站点处理程序的 html,以处理错误、有问题的请求
-
“它会返回站点处理程序的 html,以处理错误的、有问题的请求”,您已经说过了。 exact 错误是什么?还应该有一个数字 HTTP 错误代码。这些东西很有意义。
标签: python json ajax networking web-scraping