Python Scrapy多页数据爬取实现过程解析


Posted in Python onJune 12, 2020

1.先指定通用模板

url = 'https://www.qiushibaike.com/text/page/%d/'#通用的url模板
pageNum = 1

2.对parse方法递归处理

parse第一次调用表示的是用来解析第一页对应页面中的数据

对后面的页码的数据要进行手动发送

if self.pageNum <= 5:
  self.pageNum += 1
  new_url = format(self.url%self.pageNum)
  #手动请求(get)的发送
  yield scrapy.Request(new_url,callback=self.parse)

完整示例

class QiubaiSpider(scrapy.Spider):
  name = 'qiubai'
  # allowed_domains = ['www.xxx.com']
  start_urls = ['https://www.qiushibaike.com/text/']
  
  url = 'https://www.qiushibaike.com/text/page/%d/'#通用的url模板
  pageNum = 1
  #parse第一次调用表示的是用来解析第一页对应页面中的段子内容和作者
  def parse(self, response):
    div_list = response.xpath('//*[@id="content-left"]/div')
    all_data = []
    for div in div_list:
      author = div.xpath('./div[1]/a[2]/h2/text()').extract_first()
      
      content = div.xpath('./a[1]/div/span//text()').extract()
      content = ''.join(content)

      # 将解析的数据存储到item对象
      item = QiubaiproItem()
      item['author'] = author
      item['content'] = content

      # 将item提交给管道
      yield item # item一定是提交给了优先级最高的管道类

    if self.pageNum <= 5:
      self.pageNum += 1
      new_url = format(self.url%self.pageNum)
      #手动请求(get)的发送
      yield scrapy.Request(new_url,callback=self.parse)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python 字典(dict)遍历的四种方法性能测试报告
Jun 25 Python
Python基础之函数用法实例详解
Sep 10 Python
python实现的守护进程(Daemon)用法实例
Jun 02 Python
python2.x实现人民币转大写人民币
Jun 20 Python
python实现飞机大战
Sep 11 Python
对Python中实现两个数的值交换的集中方法详解
Jan 11 Python
Python中变量的输入输出实例代码详解
Jul 28 Python
python-OpenCV 实现将数组转换成灰度图和彩图
Jan 09 Python
使用Pytorch来拟合函数方式
Jan 14 Python
如何在VSCode下使用Jupyter的教程详解
Jul 13 Python
Django ModelForm组件原理及用法详解
Oct 12 Python
class类在python中获取金融数据的实例方法
Dec 10 Python
Selenium自动化测试工具使用方法汇总
Jun 12 #Python
Python使用socketServer包搭建简易服务器过程详解
Jun 12 #Python
Django之腾讯云短信的实现
Jun 12 #Python
python相对企业语言优势在哪
Jun 12 #Python
keras实现基于孪生网络的图片相似度计算方式
Jun 11 #Python
为什么说python适合写爬虫
Jun 11 #Python
python新手学习使用库
Jun 11 #Python
You might like
如何在PHP中使用Oracle数据库(5)
2006/10/09 PHP
SSI指令
2006/11/25 PHP
PHP编程函数安全篇
2013/01/08 PHP
php+ajax实现带进度条的上传图片功能【附demo源码下载】
2016/09/14 PHP
源码分析 Laravel 重复执行同一个队列任务的原因
2017/12/25 PHP
PHP7内核CGI与FastCGI详解
2019/04/14 PHP
php中目录操作opendir()、readdir()及scandir()用法示例
2019/06/08 PHP
php+lottery.js实现九宫格抽奖功能
2019/07/21 PHP
学习jquery必备 api中英文对照的chm手册 下载
2007/05/03 Javascript
Use Word to Search for Files
2007/06/15 Javascript
一个刚完成的layout(拖动流畅,不受iframe影响)
2007/08/17 Javascript
JavaScript中的数组特性介绍
2014/12/30 Javascript
8个超实用的jQuery功能代码分享
2015/01/08 Javascript
谈谈js中的prototype及prototype属性解释和常用方法
2015/11/25 Javascript
JS组件Form表单验证神器BootstrapValidator
2016/01/26 Javascript
DWR3 访问WEB元素的两种方法实例详解
2017/01/03 Javascript
ES6学习之变量的解构赋值
2017/02/12 Javascript
vue.js实现刷新当前页面的方法教程
2017/07/05 Javascript
微信小程序下拉框功能的实例代码
2018/11/06 Javascript
[49:21]TNC vs VG 2019DOTA2国际邀请赛淘汰赛 胜者组赛BO3 第三场 8.20.mp4
2019/08/22 DOTA
详解Python中的Cookie模块使用
2015/07/06 Python
玩转python爬虫之cookie使用方法
2016/02/17 Python
Php多进程实现代码
2018/05/07 Python
Python numpy.array()生成相同元素数组的示例
2018/11/12 Python
对Python模块导入时全局变量__all__的作用详解
2019/01/11 Python
如何安装并使用conda指令管理python环境
2019/07/10 Python
Python字符串和正则表达式中的反斜杠('\')问题详解
2019/09/03 Python
python将时分秒转换成秒的实例
2019/12/07 Python
解决keras GAN训练是loss不发生变化,accuracy一直为0.5的问题
2020/07/02 Python
python3.6中anaconda安装sklearn踩坑实录
2020/07/28 Python
实例讲解CSS3中Transform的perspective属性的用法
2016/04/22 HTML / CSS
会计系个人求职信范文分享
2013/12/20 职场文书
差生评语大全
2014/05/04 职场文书
淘宝客服工作职责
2014/07/11 职场文书
Pandas自定义选项option设置
2021/07/25 Python
Python 多线程处理任务实例
2021/11/07 Python