我正在尝试提取像这样构造的页面的一部分:
<div class="entry">
<span>Title</span>
<h2>Title1</h2>
<p>Content1 details</p>
<ul>
<li>Content1 list</li>
</ul>
<p>More content1 details</p>
<h2>Title2</h2>
<p>Content2 details</p>
<p>More content2 details</p>
<p>More content2 details</p>
</div>
我想将title1和title2之间的所有标签提取到列表中。而title2之后的所有标签都是另一个列表。
是否可以在xpath中使用某种正则表达式?我怎样才能做到这一点?
答案 0 :(得分:3)
合并preceding-sibling
和following-sibling
轴。来自Scrapy Shell的演示:
In [1]: for item in response.xpath("//*[preceding-sibling::h2 = 'Title1' and following-sibling::h2 = 'Title2']").extract():
...: print(item)
...:
<p>Content1 details</p>
<ul>
<li>Content1 list</li>
</ul>
<p>More content1 details</p>