我目前正在处理一份文件
<b> label1 </b>
value1 <br>
<b> label2 </b>
value2 <br>
....
我想不出一个用scrapy来处理xpath的干净方法。这是我最好的实现
hxs = HtmlXPathSelector(response)
section = hxs.select(..............)
values = section.select("text()[preceding-sibling::b/text()]"):
labels = section.select("text()/preceding-sibling::b/text()"):
但我不喜欢这种通过索引匹配两个列表的节点的方法。我宁愿遍历 1 个列表(值或标签)并将匹配节点查询为相对 xpath。如 :
values = section.select("text()[preceding-sibling::b/text()]"):
for value in values:
value.select("/preceding-sibling::b/text()"):
我一直在调整这个表达式,但总是不返回任何匹配项
更新
我正在寻找能够容忍“噪音”的稳健方法,例如:
garbage1<br>
<b> label1 </b>
value1 <br>
<b> label2 </b>
value2 <br>
garbage2<br>
<b> label3 </b>
value3 <br>
<div>garbage3</div>