python - 如何在没有浏览器仿真或 headless 浏览器的情况下从 python 脚本在网页中调用 ajax?

标签 python ajax xmlhttprequest web-scraping

我是 ajax 和 javascript 的新手。
我正在抓取一个网站,在 XPath 的帮助下,我可以在其中获取相关的详细信息。使用 Python 下载网页后( urllib2/request/mechanize )。

在网页中,这些是一些只有在单击链接后才能看到的信息。该链接调用 XHR获取我使用 firefox 的 Web 开发人员工具发现的详细信息。 (Ctrl+Shift+QTools >> Web Developer >> Network )我正在显示使用 Firefox Web 开发工具可以看到的链接及其 javascript 属性(Ctrl+Shift+CTools >> Web Developer >> Inspector )在厚黑色矩形下的附加图像中。

Link and its attributes

我还可以通过相同的 firefox web 开发人员工具查看 ajax 请求 url、 header 、响应和参数。在 http://i.stack.imgur.com/9jhfr.png 处可以看到相同的图像

headers,response and parameters

我认为我拥有 POST 的所有有效负载要求。如何在 request/urllib2 等的帮助下使用 Python 进行 http post 调用?所以作为回应,我可以在点击该链接后看到我在网页上显示的详细信息。喜欢
requests.get(url, data=<paramter_to_post which i can see in firefox>, headers=<request headers that I can see in firefox>)

我做空
如何使用python模拟ajax调用?或者如何获取单击该链接后看到的信息?

我可以使用 Selenium 自动执行此任务/PhantomJS或其他headless浏览器。但我想使用 HTTP Post 和 Get 来解决这个问题,当我点击链接时,这正是在 Firefox 中发生的。

最佳答案

首先安装 firebug ( https://getfirebug.com/ )

然后转到您的页面,启动 firebug 并转到 firebug 面板中的 Net 选项卡。 现在在此选项卡中,您可以看到您的 firefox 发送到该网站的所有 get/posts 调用。

enter image description here

现在您可以四处点击,刷新页面并查看正在进行的调用。在您的情况下,单击该按钮,您将看到正在进行新的调用,您可能会在 html 选项卡中找到它。

您可以在此处找到一个调用,一旦您点击它,您将看到请求和其他详细信息。

制作参数字典并将其附加到您帖子中的“data=”。你也可以通过制作一个字典并将其附加到你帖子中的“headers=”来制作标题。

请注意:许多网站使用 cookie 来识别调用是否由合法浏览器发出,因此可能需要对 cookie 和 url 进行大量修改。 !

如果你不给我们网站,就很难举出例子。

关于python - 如何在没有浏览器仿真或 headless 浏览器的情况下从 python 脚本在网页中调用 ajax?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23515642/

相关文章:

javascript - ajax将json值传递给html输入类型文本

javascript - 拒绝在 chrome 中获取不安全的 header "Location",在 firefox 中没有内容

javascript - XMLHttpRequest 'response' 参数为空

python - 删除集合列表的重复项

python - sympy 中矩阵的按列(或按行)运算

Python Pandas 根据日期为多行添加值

asp.net - 监听事件: in HTML from . NET

python - 创建对象后将 Id 从 CreateView 传递到另一个函数

javascript - AJAX响应文本没有得到任何东西

javascript - 使用 XMLHttpRequest 将记录添加到数据库