【问题标题】:Can I get HREF values using Mechanize which are not within the form?我可以使用不在表格中的 Mechanize 获取 HREF 值吗?
【发布时间】:2013-01-22 18:45:39
【问题描述】:

我的一个页面中有类似的 HTML(带有表单名称):

<form name="test">
<td> <A HREF="http://www.edu/st/file.html">bla bla</A> </td>
<td> <A HREF="http://www.mac/spgm/file.html">boo bla</A> </td>
<td> <A HREF="http://www.dom/st/file.html">foo</A> </td>
</form>

另一个没有表单名称的页面:

<td> <A HREF="http://www.edu/st/file.html">bla bla</A> </td>
<td> <A HREF="http://www.mac/spgm/file.html">boo bla</A> </td>
<td> <A HREF="http://www.dom/st/file.html">foo</A> </td>

在这两种情况下,我都有值 bla blaboofoo。使用这些值,我可以使用 Mechanize 获取相应的 href 值吗?

【问题讨论】:

  • 确保您发布的示例 HTML 有效是个好主意,因为这会对目标节点的访问方式产生很大影响。您在第一个示例中给出的内容无效。
  • @theTinMan 是的,我只是想在这里给出我有的格式。因为完整的 html 太大了。
  • 然后你把它剥离到复制问题所需的基本要素,同时保持它的有效性。
  • @theTinMan 根据您的经验,我希望您可以在此post 中给我一个更好的解决方案。我可以吗?

标签: ruby mechanize mechanize-ruby


【解决方案1】:

您可以从链接中获取href 属性:

m = Mechanize.new
page = m.get("yourpage")
page.link_with(:text => "bla bla").href #=> "http://www.edu/st/file.html"

【讨论】:

  • +1 给你! :) 我不知所措。
  • 你能帮我吗here
【解决方案2】:

您可以尝试遍历页面上的所有链接并检查文本是否相同。

doc.xpath('//a[@href]').each do |link|
  if link.text.strip == "bla bla"
    # Your code here.
end

【讨论】:

  • +1 给你! :) 我不知所措。
猜你喜欢
  • 2013-10-03
  • 1970-01-01
  • 1970-01-01
  • 2016-12-29
  • 2018-08-02
  • 2020-12-01
  • 2010-11-26
  • 2012-05-10
  • 2022-12-20
相关资源
最近更新 更多