scrapy不会返回文本

时间:2014-06-15 07:16:48

标签: python xpath web-scraping scrapy

我是scrapy学习的新手。想要抓取网页。在开始完成项目之前,正在探索命令行。 通过网页抓取,我能够使用以下命令

提取H3标签下的链接
sel.xpath("//h3//@href").extract()

这提取了所有网址。但后来才意识到网站中的链接是分页的。通过手动浏览页面,我能够知道总页数。但我想从第一页提取,因为它有底部的信息 如

Page 1 of 100
在div标签下

<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']

这是正确的方法吗? 为什么我的第一个命令没有给出确切的内容?

1 个答案:

答案 0 :(得分:1)

如果你使用它将会起作用:

sel.xpath('//div[@class="pagination-meta"]/text()').extract();

由于您匹配完全字符串,下划线破折号肯定会有所作为。

有很多方法可以达到相同的效果。你做的第二种方式也是正确的。很多时候,需要在一个或多个位置步骤中获取上下文,以便使用相对XPath表达式导航到最终选择步骤。当您的页面可能发生变化或者结构可能发生变化时,就会发生这种情况。