我正在尝试确定网站上任何搜索结果的页数,以便我可以使用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 /一个/文本())
答案 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"']