使用xpath在锚标记内提取文本

时间:2017-07-20 14:07:22

标签: xpath web-scraping

我正在尝试确定网站上任何搜索结果的页数,以便我可以使用lxml和xpath抓取所有页面的数据。

有一个分页标签,结构如下: 页面:1 2 3 ... 7下一页

同样的html内容就像是

<ul class="ulclass">
 <li></li>
 <li>
      <span> You are on the first page</span>
      "1"
 </li>
 <li>
      <a href="link to second page">
        <span></span>
      "2"
      </a>
 </li>
  <li>
 </li>
      ...
  <li>
      <a href="link to last page">
        <span></span>
      "7"
      </a>
 </li>

我的方法是提取页码1,2,3,7,以便我可以为每个页面重复网页抓取7次,否则它只会刮擦页面的第一个结果。 我编写了以下xpath,但它没有返回正确的页码。

  

的xpath('// UL [@类= “ulclass”] / LI /一个/文本())

1 个答案:

答案 0 :(得分:1)

如果我扩展你的例子来形成这个,

<ul class="ulclass">
<li><span>You are on the first page</span>"1"</li>
<li><a href="link to second page"><span></span>"2"</a></li>
<li><a href="link to third page"><span></span>"3"</a></li>
<li><a href="link to fourth page"><span></span>"4"</a></li>
<li><a href="link to fifth page"><span></span>"5"</a></li>
<li><a href="link to sixth page"><span></span>"6"</a></li>
<li><a href="link to last page"><span></span>"7"</a></li>
</ul>

然后在Python中使用scrapy我可以得到这个:

>>> from scrapy.selector import Selector
>>> selector = Selector(text=open('temp.htm').read())
>>> selector.xpath('..//ul[@class="ulclass"]/li/a/text()').extract()
['"2"', '"3"', '"4"', '"5"', '"6"', '"7"']