Python爬虫 #018 Scrapy回调函数
一般的爬虫只能爬取单个网页的数据,对于多个页面需要多次requests,而Scrapy中回调函数可以反复的爬取
1. 多网页获取数据
-
对于有些页面,有下一页按钮,且审查元素中存在下一页的url,如:

-
则可以多次回调函数,来达到解析多页面的目的
# -*- coding: utf-8 -*- import scrapy # 导入items中的类 from joke.items import JokeItem # 该代码只负责解析 class XiaohuaSpider(scrapy.Spider): name = 'xiaohua' # 限制爬虫的范围,爬取多页面可能会出问题,则注释掉 # allowed_domains = ['xiaohua.zol.com.cn/lengxiaohua/'] start_urls = ['http://xiaohua.zol.com.cn/lengxiaohua/'] # 用于翻页 base_url = 'http://xiaohua.zol.com.cn' def parse(self, response): jokes = response.xpath('//ul[@class="article-list"]/li') for joke in jokes: title = joke.xpath('./span[2]/a/text()')[0].extract() content = joke.xpath('./div[2]//text()').extract() # content是列表,且有很多无效字符 ## 把字符串连接起来且消除\t,\n字符 content = " ".join(content).replace('\t','').replace('\n','') item = JokeItem() item['title'] = title item['content'] = content # 把数据返回给item,用return会结束函数 yield item # 获取下一页的链接,get可取出(用法与xpath有点不一样) next_page = response.xpath('//div[@class="page-box"]/div/a[@class="page-next"]/@href').get() print('----------------',next_page) print(self.base_url+next_page) # 请求下一页的网址,callback调用parse函数,实现循环 yield scrapy.Request(self.base_url+next_page, callback=self.parse)
本文来自博客园,作者:{枫_Null},转载请注明原文链接:https://www.cnblogs.com/fengNull/articles/16660045.html

浙公网安备 33010602011771号