beautifulsoup 和 mechanize 获取 ajax 调用结果

发布于 2024-08-28 11:33:23 字数 221 浏览 5 评论 0原文

你好,我正在使用 python 2.5 和 beautifulsoup 构建一个 scraper 但我发现了一个问题......网页的一部分正在生成 用户单击某个按钮后,通过使用适当的参数调用特定的 javacsript 函数来启动 ajax 请求,

有没有办法模拟用户交互并获得此结果?我遇到了一个机械化模块,但在我看来,这主要用于处理表单......

我将不胜感激任何链接或一些代码示例 谢谢

hi im building a scraper using python 2.5 and beautifulsoup
but im stuble upon a problem ... part of the web page is generating
after user click on some button, whitch start an ajax request by calling specific javacsript function using proper parameters

is there a way to simulate user interaction and get this result? i come across a mechanize module but it seems to me that this is mostly used to work with forms ...

i would appreciate any links or some code samples
thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

彩虹直至黑白 2024-09-04 11:33:23

好吧,我已经弄清楚了......当我意识到我可以使用 urllib、ulrlib2 和 beautifulsoup 的组合后,这非常简单

import urllib, urllib2
from BeautifulSoup import BeautifulSoup as bs_parse

data = urllib.urlencode(values)
req  = urllib2.Request(url, data)
res  = urllib2.urlopen(req)
page = bs_parse(res.read())

ok so i have figured it out ... it was quite simple after i realised that i could use combination of urllib, ulrlib2 and beautifulsoup

import urllib, urllib2
from BeautifulSoup import BeautifulSoup as bs_parse

data = urllib.urlencode(values)
req  = urllib2.Request(url, data)
res  = urllib2.urlopen(req)
page = bs_parse(res.read())
很酷不放纵 2024-09-04 11:33:23

不,你不能轻易做到这一点。据我所知,您的选择是,最简单的第一个:

  1. 作为人类程序员,您自己阅读 AJAX javascript 代码,理解它,然后编写 python 代码来手动模拟 AJAX 调用。您还可以使用一些捕获软件来捕获实时发出的请求/响应,并尝试用代码重现它们;
  2. 使用 selenium 或其他浏览器自动化工具在真实的网络浏览器上获取页面;
  3. 使用一些 python javascript 运行程序,例如 spidermonkeypyv8 运行 javascript 代码,并将其挂接到您的 HTML dom 副本;

No, you can't do that easily. AFAIK your options are, easiest first:

  1. Read the AJAX javascript code yourself, as a human programmer, understand it, and then write python code to simulate the AJAX calls by hand. You can also use some capture software to capture requests/responses made live and try to reproduce them with code;
  2. Use selenium or some other browser automation tool to fetch the page on a real web browser;
  3. Use some python javascript runner like spidermonkey or pyv8 to run the javascript code, and hook it to your copy of the HTML dom;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文