【问题标题】:Open specific "#" link that is processed by Javascript? [closed]打开由 Javascript 处理的特定“#”链接? [关闭]
【发布时间】:2013-06-28 00:36:10
【问题描述】:

我想在 Python 中访问一个由 JavaScript 处理的链接,如下所示:

<a href="#" class="example"> Hello World </a>

我想根据 &lt;a&gt; 元素的 class 属性或 id 属性从 HTML 字符串中查找链接。

在 Python 中可以做到这一点吗?

【问题讨论】:

  • 不清楚你从什么开始,或者你到底在问什么。您是否有一个 HTML 文件,并且想要解析其中的各种 &lt;a&gt; 标记的 href 属性? “打开链接”是指在网络浏览器中,还是在后台使用 urllib2 之类的东西?
  • 我要打开href="#"和class="example"的链接....如果python脚本发现class等于"example",打开!但是,当href为“#”时如何打开它?
  • 如果您需要触发,带有哈希的链接将无处可去,如果您使用 python,您可以使用无头浏览器

标签: javascript python url


【解决方案1】:

您不能,因为这是一个自引用链接。您已经打开了文档。

URL 中的# 表示文档中的位置。当 URL # 开头 时,它是 当前 文档中的位置;浏览器将滚动到以# 命名的任何 ID。在以下示例中,单击&lt;a href="#footer"&gt; 链接会指示浏览器滚动文档以将&lt;div id="footer"&gt; 元素定位在浏览器窗口的顶部:

<a href="#footer">to the end of the document</a>

<!-- long document follows -->

<div id="footer">Something at the bottom of the document</div>

当 URL # 组成时,该 URL 是无操作的。它是一个占位符,用于 JavaScript 通常拦截链接点击。使用 Python 处理此文档时,您可以完全忽略它。您的 Python HTML 解析器不是浏览器,没有运行 JavaScript 来处理该链接元素上的鼠标点击。甚至没有鼠标点击。

如果您正在尝试处理 JavaScript 驱动的页面,您可以使用 JavaScript 调试器(大多数浏览器附带)来确定它在做什么,或者运行由Python。你可以使用Ghost.py 来做后者:

from ghost import Ghost
ghost = Ghost()
page, extra_resources = ghost.open("http://jeanphi.fr")
assert page.http_status==200 and 'jeanphix' in ghost.content

这运行一个无头 Webkit 浏览器。

【讨论】:

  • 没有图书馆可以做到这一点吗?机械化或任何其他图书馆?
  • 谢谢,我会尝试并报告它是否对我有用!
猜你喜欢
  • 2021-03-11
  • 2014-03-15
  • 2015-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-18
  • 2012-04-30
  • 1970-01-01
相关资源
最近更新 更多