【问题标题】:beautifulsoup and mechanize to get ajax call resultBeautifulsoup 和 mechanize 获取 ajax 调用结果
【发布时间】:2011-02-06 07:06:19
【问题描述】:

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

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

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

【问题讨论】:

    标签: python ajax beautifulsoup mechanize scraper


    【解决方案1】:

    不,你不能轻易做到这一点。 AFAIK 你的选择是,最简单的第一:

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

    【讨论】:

    • 嗨,第一个选项不会那么容易,因为 javascript 是打包版本,感谢您的提醒,我明天第一件事会查看它
    • @nabizan:这就是为什么我还建议在选项 1 上使用捕获软件
    • 嗨,所以在对 unpack javascript 进行了一些挖掘之后,我发现了我应该调用什么以及如何调用。比这很容易(有关更多信息,请参阅我的答案)
    【解决方案2】:

    好的,所以我想通了......在我意识到我可以使用 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())
    

    【讨论】:

    • 我面临同样的问题...请帮助...values是什么@
    猜你喜欢
    • 2014-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-18
    • 2012-12-04
    • 1970-01-01
    • 2017-09-14
    • 1970-01-01
    相关资源
    最近更新 更多