【问题标题】:Retrieving rendered html from ajax driven website从 ajax 驱动的网站检索呈现的 html
【发布时间】:2012-07-04 14:42:22
【问题描述】:

我目前正在尝试在 python 中编写一个脚本,允许我向网页发送 get 请求(使用 python requests 模块),然后使用模块 beautiful soup 解析响应。

我遇到的问题是我试图获取的表在初始 DOM 加载后通过 javascript 加载/创建,因此对我的 get 请求的响应不包含它。

【问题讨论】:

    标签: javascript python html http parsing


    【解决方案1】:

    您可以做两种可能的事情,这取决于您的问题。

    1.直接获取表
    如果您确实想要获取表格,请检查发出的获取表格的请求。例如,您可以使用 Firebug 或 Chrome 开发者工具为请求获取正确的结构。

    2。 Javascript 很重要
    如果支持许多网站更重要,并且 javascript 发挥一些作用很重要,您可以使用 Selenium 之类的东西来使用执行 Javascript 的 Brwoser,您可以在加载表格后获取源代码。


    更新 - 基于您评论中的 URL
    您可以在 Chrome 开发者工具中的 Network 选项卡上看到,它为此请求加载了很长时间:

    http://www.ticketmaster.com/json/browse/music?select=n93

    所以我们假设这会加载您的数据。在浏览器中打开 URL,您会看到表的数据在 JSON Format 中。 如果您只想解析/获取此表并且对于很多页面没有通用性,我会使用这种方法获取数据。

    更新
    尝试使用过滤器或日期范围更改表格。您可以检查 API 的工作原理并以您想要的方式发出请求。

    Dance/Electronic
    /json/browse/music?g=Dance%2FElectronic&select=n7

    还有另一个 API 调用:
    http://www.ticketmaster.com/json/browse/music/histogram?select=n7

    但我不能告诉你它的用途。但我认为你现在有一个很好的方向和比我更多的时间来理解它是如何工作的;)


    工具
    我用来查找 URL 的工具是内置的 Chrome Developer ToolNetwork 选项卡。激活该工具,刷新页面并修改请求以了解发生了什么。

    用python解析JSON也很简单:http://docs.python.org/library/json.html

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多