文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
12.8 翻页功能
以上实现了当前网页数据的抽取,但是我们要抽取博客所有页面的文章,这就需要实现翻页功能。翻页功能的实现,本质上是构造Request并提交给Scrapy引擎的过程。
首先抽取下一页的链接,我们使用Selector中的re()方法进行抽取,正则表达式为
<a href="(\S*)">下一页</a>
构造请求使用scrapy.Request对象。parse()方法代码如下:
def parse(self, response): # 实现网页的解析 # 首先抽取所有的文章 papers = response.xpath(".// *[@class='day']") # 从每篇文章中抽取数据 for paper in papers: url = paper.xpath(".// *[@class='postTitle']/a/@href").extract()[0] title = paper.xpath(".// *[@class='postTitle']/a/text()").extract()[0] time = paper.xpath(".// *[@class='dayTitle']/a/text()").extract()[0] content = paper.xpath(".// *[@class='postTitle']/a/text()").extract()[0] item = CnblogspiderItem(url=url,title=title,time=time,content=content) yield item next_page = Selector(response).re(u'<a href="(\S*)">下一页</a>') if next_page: yield scrapy.Request(url=next_page[0],callback=self.parse)
Request对象的构造方法中URL为请求链接,callback为回调方法,回调方法用来指定由谁来解析此项Request请求的响应。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论