Tag: xpath

hpricot与firebug的XPath

我正在尝试使用hpricot从基于表的网站中提取一些信息。 我用FireBug获得了XPath。 /html/body/div/table/tbody/tr/td/table/tbody/tr[2]/td/table/tbody/tr/td[2]/table/tbody/tr[3]/td/table[3]/tbody/tr 这不起作用……显然,FireBug的XPath是呈现HTML的路径,而不是网站的实际HTML。 我读到删除tbody可能会解决问题。 我试着用: /html/body/div/table/tr/td/table/tr[2]/td/table/tr/td[2]/table/tr[3]/td/table[3]/tr 并且仍然无法工作…我做了一些研究,有些人报告他们让他们的XPath删除数字,所以我试试这个: /html/body/div/table/tr/td/table/tr/td/table/tr/td/table/tr/td/table/tr 还是没有运气…… 所以我决定一步一步这样做: (doc/”html/body/div/table/tr”).each do |aaa | (aaa/”td”).each do | bbb| pp bbb (bbb/”table/tr”).each do | ccc| pp ccc end end end 我在bbb中找到了我需要的信息,但在ccc中找不到。 我做错了什么,或者有更好的工具来废弃使用长/复杂XPath的HTML。

用Nokogiri解析简单的XML

我有以下XML: Title 1 http://www.example.com/url-1 Title 2 http://www.example.com/url-2 Title 3 http://www.example.com/url-3 而且,我想将其转换为HTML列表: Title 1 Title 2 Title 3 目前我有这个: 控制器: require ‘nokogiri’ doc = Nokogiri::XML(…) @links = doc.xpath(‘//links/item’).map do |i| {‘title’ => i.xpath(‘//title’), ‘url’ => i.xpath(‘//url’)} end 模板: <a href="https://stackoverflow.com/questions/3938810/parsing-simple-xml-with-nokogiri/”> 结果HTML: Title 1Title 2Title 3 Title 1Title 2Title 3 Title 1Title 2Title 3 我究竟做错了什么? 有更好的方法吗?

XPath以查找所有后续兄弟姐妹,直到特定类型的下一个兄弟

鉴于此XML / HTML: Label1Value1 Label2Value2 Label3Value3aValue3b Label4Value4 我想找到所有 然后,为每个 找到以下 直到下一个 。 使用Ruby的Nokogiri我能够像这样完成: dl.xpath(‘dt’).each do |dt| ct = dt.xpath(‘count(following-sibling::dt)’) dds = dt.xpath(“following-sibling::dd[count(following-sibling::dt)=#{ct}]”) puts “#{dt.text}: #{dds.map(&:text).join(‘, ‘)}” end #=> Label1: Value1 #=> Label2: Value2 #=> Label3: Value3a, Value3b #=> Label4: Value4 但是,你可以看到我在Ruby中创建一个变量,然后使用它编写一个XPath。 如何编写一个相同的XPath表达式? 我猜到: following-sibling::dd[count(following-sibling::dt)=count(self/following-sibling::dt)] 但显然我不明白那里的self意味着什么。 这个问题类似于XPath:选择所有以下兄弟,直到另一个兄弟,除了’stop’节点没有唯一标识符。 这个问题与xpath几乎相同,除了我要求的XPath-only解决方案之外, 找到所有以下兄弟相邻节点直到另一个类型 。

Ruby Selenium Web Drive:如何通过xpath div id和css类查找特定元素

我有一个下面的HTML,我试图使用ruby selenium web驱动程序进行测试 validated.txt test-client Ref001 Error.txt This invoice contains an error test-client Ref002 Pending.txt 我试图使用selenium web驱动程序在Ruby中找到任何给定div id的svg元素 rows = driver.find_elements(:css => “div.container-fluid.container-results >div\##{row_number.to_i-1} >ul >li >a >svg”) 但是当我运行第1行的脚本时,我正处于exception之下 invalid selector: An invalid or illegal selector was specified (Session info: chrome=57.0.2987.133) (Driver info: chromedriver=2.28.455520 (cc17746adff54984afff480136733114c6b3704b),platform=Windows NT 6.1.7601 SP1 x86_64) (WARNING: The server did not provide […]

Ruby Selenium Web驱动程序:如何计算特定节点的子元素节点

我是新手selenium程序员请帮帮我… 我有html以下,我试图计算元素 的子节点,这是4(1 div和3 li元素) ADD ATTACHMENTS SIGN DRAFT 目前我正在单独计算计数如下( row变量高于html) li_actions_count = row.find_elements(:xpath => “./li”).length div_actions_count = row.find_elements(:xpath => “./div”).length 任何人都可以使用selenium web驱动程序在Ruby中使用一种简单的方法来帮助我

如何使用XPath访问在JavaScript中呈现的HTML元素?

如何使用XPath和Nokogiri获取具有特定类名的 ? 表是嵌套的,其中一些没有ID或类,所以我不能嵌套这样的东西: //table/tbody/tr/td 这是我到目前为止: doc = Nokogiri::HTML(open(“http://www.goalzz.com/default.aspx?c=8358″)) doc.xpath(‘//td[@class=”m_g”]’).each do |node| pp node.to_s end 有任何想法吗? 这个类名很少有 ,我想得到所有这些。

删除标记但保留文本

所以我在xml文件中有这个标签 Something 123 我想要的结果是使用Nokogiri并完全删除它的标签,因此它不再是可点击的链接,例如 Something 123 我的尝试: content = Nokogiri::XML.fragment(page_content) content.search(‘.//a’).remove 但这也删除了文本。 有关如何使用Nokogiri实现我想要的结果的任何建议?

Ruby XPath找到属性

可以使用什么Ruby库来使用XPath选择属性 ,并将其用作其他XPath查询的起点。 例: 期望的代码: get_pair “//*/@key”, “../@value” get_pair “//*/@foo”, “../@bar” 预期产量: “A” “B” “C” “D” “E” “F” 伪实现: def get_pair(key, value) xml_doc.select[key].each do |a| puts [a, a.select[value]] end end

使用Nokogiri在XPath中逃脱单引号?

我有一个看起来像这样的XPath查询,包括单引号和双引号。 如何正确地转义撇号以使查询有效? 我试过了: “//li[text()=’Frank's car’]” 但它似乎不适合我。 有任何想法吗? “//li[text()=’Frank’s car’]”

Nokogiri:使用XPath搜索

我使用Nokogiri (Rubygem)css搜索在我的html中查找某些 。 看起来Nokogiri的css搜索不喜欢正则表达式。 我想切换到Nokogiri的xpath搜索,因为它似乎支持搜索字符串中的正则表达式。 如何在xpath搜索中实现下面提到的(伪)css搜索? require ‘rubygems’ require ‘nokogiri’ value = Nokogiri::HTML.parse(<<-HTML_END) " A B Bla C D 3 ” HTML_END # my_block is given my_bl = “1” # my_eq corresponds to this regex my_eq = “\/[0-9]+\/” # FIXME The following line should be changed to an xpath search. if my_div = value.css(“div#eq-#{my_eq}_bl-#{my_bl}.foo”).first # […]