【问题标题】:Follow a javascript link with mechanize and python按照 mechanize 和 python 的 javascript 链接
【发布时间】:2013-09-19 12:53:34
【问题描述】:

我正在做一些网络抓取,项目几乎完成了,除了我需要点击一个 javascript 链接并且我不知道如何使用 Python 和机械化。

在其中一个页面上,出现了一个 javascript 链接列表,我想依次关注它们,抓取一些数据,然后重复。我知道 mechanize 不适用于 javascript,但有人知道解决方法吗?这是我用来隔离链接的代码:

for Auth in iterAuths:
     Auth = str(Auth.contents[0]).strip()
     br.find_link(text=Auth)

现在如果我执行br.follow_link(text=Auth),我会收到错误urllib2.URLError: <urlopen error unknown url type: javascript>

如果我使用print br.click_link(text=Auth'),它会打印为Request for javascript:SendThePage('5660')

我只需要通过 javascript 链接。有人可以帮忙吗?

【问题讨论】:

    标签: javascript python web-scraping mechanize


    【解决方案1】:

    当我需要做类似的事情时,我查看了我试图关注的链接。

    其中一些是使用 javascript 生成的静态链接。它们足够可预测/一致,我可以事先手动生成一个列表。

    其他的只是带有参数的构造 URL。这些也可以事先分析并生成 python 端并作为请求传递,而不是“点击此链接”。

    如果您需要实际执行 javascript,您可以运行 PyV8 + Mechanize 混合。我一直在玩这个,它看起来很酷。 PyV8 将 Python 与 V8 Javascript 引擎连接起来,允许您创建 JS 环境并执行任意代码。它可以很好地在两种语言之间来回切换。

    我没有任何示例代码,但是这 3 种解决方案中的一种对您有用 :) 祝你好运!

    【讨论】:

    • 你有安装 PyV8 的资源吗,我有点麻烦。
    • @ConstantlyConfused 在这一点上,我只是考虑将 Selenium 与 PhantomJS 后端一起使用,这样您就可以无头运行它。到目前为止,这种工作流程已经到来,机械化已经死了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-23
    • 1970-01-01
    • 1970-01-01
    • 2015-03-24
    • 1970-01-01
    相关资源
    最近更新 更多