【问题标题】:Scraping an embed element using lxml.html, or how to trick a website into thinking you have Flash installed使用 lxml.html 抓取嵌入元素,或者如何欺骗网站认为您安装了 Flash
【发布时间】:2012-07-04 11:05:12
【问题描述】:

我正在尝试抓取一个网站,我需要获取一个嵌入元素,但是因为我使用的是 Python 和 lxml.html,所以该网站准确地断定我没有安装 Flash,而不是向我展示嵌入元素,它向我展示了这个:

<div>
    <font>
        <u>
            <b>
                <a href="http://get.adobe.com/flashplayer/">
                ATTENTION:<br>This video will not play. You currently do not have Adobe Flash installed on this computer. Please click here to download it (it's free!)
                </a>
            </b>
        </u>
    </font>
</div>

显然这是一个问题,所以我想知道是否有可能为了检索正确的元素而欺骗浏览器,让浏览器认为你安装了 Flash,即使你没有安装?

希望有人能帮忙!

【问题讨论】:

  • 该部分是否被某些客户端 JavaScript 替换为实际加载时的 &lt;embed&gt;
  • 其中 s1 是:
  • 你不需要评论你自己的问题,你可以update it代替

标签: python screen-scraping web-scraping lxml


【解决方案1】:

我相信以下博客文章很好地回答了您的问题。作者也有同样的需求,使用 Python 抓取 Flash 内容。同样的问题出现了。他意识到他只需要实例化一个浏览器(即使只是一个甚至不显示在屏幕上的内存中的浏览器),然后抓取它的输出。我认为这可能是一种成功的方法,可以满足您的需求,而且他很容易理解。

http://blog.motane.lu/2009/06/18/pywebkitgtk-execute-javascript-from-python/

【讨论】:

  • 有没有办法在 Windows 上安装 pywebkitgtk?因为除了不能在 Python 2.7 上运行的版本之外,我没有找到任何东西。
  • 我会接受你的回答,因为它让我找到了部分答案,尽管仍然不起作用。具体使用PyQt4 QtWebKit可以在Windows上运行并在内存中渲染网页,但是有一些不相关的问题我需要解决。
  • 好的,谢谢!感谢您的反馈,我希望您能得到您需要的整个系统。如果您这样做,请发布...
【解决方案2】:

要获取由 JavaScript 生成的内容,您还可以尝试 Selenium,example

【讨论】:

  • 这个好像是启动浏览器,能不能在后台启动?
  • @Atheuz:你可以使用virtual display
  • 似乎只适用于 Linux 系统。至少从我能看到的情况来看。
  • @Atheuz:你可以试试 HtmlUnitDriver、WebKitDriver、GhostDriver 等无头驱动(未准备好)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-08
  • 1970-01-01
  • 2018-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多