我想提取Web上的一些数据,并且我正在使用chrome提供的Web scraper开发工具。我的网页包含一个部分,其中列出了每个产品的详细信息(有关图形卡,处理器,显示器等的详细信息)。但是每个节包含许多行,并且这些行的位置不是固定的。如果使用TR和TD标签对其进行了描述,那么我可以应用这样的条件(例如:tr:contains('Prozessortyp')td.value)此条件确认,如果行值为“ Prozessortyp”,则仅接受相应的td值。
但是我提取的网站已经使用dd和dt标签进行了描述。我将附上一个特定部分的详细屏幕截图。
当我想选择本节的第一行时,它在网络抓取器中提供的选择器是section:nth-of-type(2) dd:nth-of-type(1)
。但是,当行具有键“ Arbeitsspeicher-Typ”然后在该相应行中选择值时,如何设置条件。
谢谢:)
答案 0 :(得分:0)
CSS选择器实际上能够选择元素的同级。对于此用例,您需要使用Adjacent Sibling Selector(+):
dt:contains("Arbeitsspeicher-Typ") + dd
dt:contains("Speichergeschwindigkeit") + dd
...
这应该可以解决问题,前提是选择器图中的选择器是明确的。我建议使用dl.specification
作为父选择器。
如果任何dt
元素表示一个布尔属性,该布尔属性在文本输出中不容易捕获,例如,当dd
包含不带文本的svg复选标记时:
dt:contains("Validated")
当行本身的存在是有条件的时,只需检查dt
的存在(省略dd
兄弟选择器)就可以产生所需的信息。