我是scrapy学习的新手。想要抓取网页。在开始完成项目之前,正在探索命令行。 通过网页抓取,我能够使用以下命令
提取H3标签下的链接sel.xpath("//h3//@href").extract()
这提取了所有网址。但后来才意识到网站中的链接是分页的。通过手动浏览页面,我能够知道总页数。但我想从第一页提取,因为它有底部的信息 如
Page 1 of 100
<div class="pagination-meta">
Page 1 of 100
</div>
我尝试使用以下命令来提取详细信息。但它单独以[]返回。如果我错了,请纠正我
sel.xpath('//div[@class="pagination_meta"]/text()').extract();
我试过以下,因为pagination-meta的div是在另外两个div之下
<div class="search-pagination-top bb box-sizing-content">
<div class="grid_3 column alpha tmargin">
<div class="pagination-meta">
Page 1 of 100
</div>
</div>
</div>
sel.xpath('//div[@class="search-pagination-top bb box-sizing-content"]//div/text()').extract();
[u'Page 1 of 100']
这是正确的方法吗? 为什么我的第一个命令没有给出确切的内容?
答案 0 :(得分:1)
如果你使用它将会起作用:
sel.xpath('//div[@class="pagination-meta"]/text()').extract();
由于您匹配完全字符串,下划线和破折号肯定会有所作为。
有很多方法可以达到相同的效果。你做的第二种方式也是正确的。很多时候,需要在一个或多个位置步骤中获取上下文,以便使用相对XPath表达式导航到最终选择步骤。当您的页面可能发生变化或者结构可能发生变化时,就会发生这种情况。