gpt4 book ai didi

css - 当 id 包含使用 Nokogiri 的特殊字符时,如何抓取 URL/文本

转载 作者:行者123 更新时间:2023-11-28 12:28:29 26 4
gpt4 key购买 nike

我正在尝试从 https://webcat.schaeffler.com/web/schaeffler/pl/PKW/applicationSearch.xhtml 中抓取一些数据.

我开始构建我的应用程序的结构:

require 'nokogiri'
require 'open-uri'

class Scrape

def first(strona)
@page = Nokogiri::HTML(open(strona))
end

def marka(css)
@page.css(css).text
end

end

x = Scrape.new

x.first("https://webcat.schaeffler.com/web/schaeffler/pl/PKW/index.xhtml")
puts x.marka("a#searchByConstraints:form:j_idt491:0:j_idt493:0:j_idt495")

它应该放“ABARTH”,但 id 包含特殊字符,如 “:”,我唯一得到的是:

unexpected '0' after ':' (Nokogiri::CSS::SyntaxError)

我在“Is there a way to escape non-alphanumeric characters in Nokogiri css?”上找到了解决方案,所以我将代码的最后一行更改为:

puts x.marka('*[id="searchByConstraints:form:j_idt491:0:j_idt493:0:j_idt495"]')

它返回一个空字符串,但我不知道为什么。

目标站点上的元素如下所示:

<a id="searchByConstraints:form:j_idt491:0:j_idt493:0:j_idt495" href="/web/schaeffler/pl/PKW/3854/applicationSearch.xhtml" title="ABARTH">ABARTH</a>

我做错了什么,或者它在我的情况下不起作用。

最佳答案

这些 id 是非标准的 CSS,因此您不能像搜索普通标签那样搜索它们,这类似于 <div id="this-is-normal">。 .相反,您需要匹配 div 的 id 中的模式。

我想这就是你需要的:

@page.css('div[id^="searchByConstraints:form:j_idt491"]')

所以对你来说是:

x.marka('div[id^="searchByConstraints:form:j_idt491"]')

作为旁注,我建议您将类(class)命名为 ScrapperScrape而且最好在类之后命名实例变量,所以

scrapper = Scrapper.new
scrapper.marka('blah') # etc. maybe you mean marker?

关于css - 当 id 包含使用 Nokogiri 的特殊字符时,如何抓取 URL/文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59041432/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com