带有dd和dt条件的Web刮板镀铬扩展

时间:2018-10-19 09:59:00

标签: web-scraping developer-tools data-extraction self-extracting

我想提取Web上的一些数据,并且我正在使用chrome提供的Web scraper开发工具。我的网页包含一个部分,其中列出了每个产品的详细信息(有关图形卡,处理器,显示器等的详细信息)。但是每个节包含许多行,并且这些行的位置不是固定的。如果使用TR和TD标签对其进行了描述,那么我可以应用这样的条件(例如:tr:contains('Prozessortyp')td.value)此条件确认,如果行值为“ Prozessortyp”,则仅接受相应的td值。

但是我提取的网站已经使用dd和dt标签进行了描述。我将附上一个特定部分的详细屏幕截图。 enter image description here

enter image description here

当我想选择本节的第一行时,它在网络抓取器中提供的选择器是section:nth-of-type(2) dd:nth-of-type(1)。但是,当行具有键“ Arbeitsspeicher-Typ”然后在该相应行中选择值时,如何设置条件。

谢谢:)

1 个答案:

答案 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兄弟选择器)就可以产生所需的信息。