【问题标题】:Scraping dynamic content in a website抓取网站中的动态内容
【发布时间】:2012-01-09 13:23:41
【问题描述】:

我需要从 Link 这个网站上抓取新闻公告。 公告似乎是动态生成的。它们不会出现在源代码中。我通常使用机械化,但我认为它不起作用。我能为此做些什么?我对 python 或 perl 没问题。

【问题讨论】:

标签: python perl web-scraping


【解决方案1】:

如果内容是动态生成的,您可以使用WindmillSeleninum 来驱动浏览器,并在渲染后获取数据。

你可以找到一个例子here

【讨论】:

    【解决方案2】:

    在 python 中,您可以使用urlliburllib2 连接到网站并收集数据。例如:

    from urllib2 import urlopen
    myUrl = "http://www.marketvectorsindices.com/#!News/List"
    inStream = urlopen(myUrl)
    instream.read(1024) # etc, in a while loop
    # all your fun page parsing code (perhaps: import from xml.dom.minidom import parse)
    

    【讨论】:

    • 这是否处理 javascript 和类似的客户端内容?
    • 不。如果你在 python 上,你最好使用 jcollado 的答案,看看 Windmill 或 Selenium。不过没用过。
    【解决方案3】:

    礼貌的选择是询问网站所有者是否有允许您访问他们的新闻报道的 API。

    不太礼貌的选择是跟踪页面加载时发生的 HTTP 事务,并确定哪一个是提取数据的 AJAX 调用。

    看起来是this one。但它看起来可能包含会话数据,所以我不知道它会继续工作多久。

    【讨论】:

    • 你是如何识别文件的?
    • 可能是 firebug 或 firefox 8.. 或类似版本中的新网络控制台。
    • 我是老派。我使用了 Firefox 的 HTTP Live Headers 扩展。
    • @ØyvindSkaar 我有萤火虫,你能告诉我怎么找吗?
    • @Aks 没有安装它,但是有“网络”选项卡或其他可以显示浏览器在加载页面时执行的所有 GET(和 POST 等)请求的东西。这包括由 javascript 代码生成的那些。那些可能看起来很远。当您使用该站点时,您可以看到进行了哪些 ajax 调用(只是 GET、POST 等)。见getfirebug.com/network
    【解决方案4】:

    还有WWW::Scripter“用于为有脚本的网站编写脚本”。没用过。

    【讨论】:

      猜你喜欢
      • 2014-05-08
      • 1970-01-01
      • 2019-01-13
      • 1970-01-01
      • 1970-01-01
      • 2020-05-24
      • 1970-01-01
      • 2010-09-17
      相关资源
      最近更新 更多