2017-07-20 30 views
0

我想确定网站上的任何搜索结果有多少页,以便我可以使用lxml和xpath为所有页面抓取数据。使用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 /一个/文本())

+0

如果你正在做网络抓取其他软件工作* *? –

+0

我目前没有使用python和lxml以外的其他任何东西。 – separ1

回答

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"'] 
+0

感谢您的周转账单。深表感谢。问题出在网页上。它返回的最后一个数字是7的倍数.xpath返回的结果与你的一样。 :) – separ1