beautifulsoup和机械化获得ajax调用结果

时间:2010-04-09 19:01:24

标签: python ajax beautifulsoup mechanize scraper

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

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

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

2 个答案:

答案 0 :(得分:6)

好吧所以我已经弄明白了......在我意识到我可以使用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())

答案 1 :(得分:3)

不,你不能轻易做到这一点。 AFAIK您最喜欢的选择是:

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