在标签之间提取值 - python xpath

时间:2015-11-03 22:06:33

标签: python xpath scrapy

我正在尝试提取像这样构造的页面的一部分:

<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中使用某种正则表达式?我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:3)

合并preceding-siblingfollowing-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>