Python scrapy爬取小说代码案例详解


Posted in Python onJuly 09, 2020

scrapy是目前python使用的最广泛的爬虫框架

架构图如下

Python scrapy爬取小说代码案例详解

解释:

  • Scrapy Engine(引擎): 负责Spider、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等。
  • Scheduler(调度器): 它负责接受引擎发送过来的Request请求,并按照一定的方式进行整理排列,入队,当引擎需要时,交还给引擎。
  • Downloader(下载器):负责下载Scrapy Engine(引擎)发送的所有Requests请求,并将其获取到的Responses交还给Scrapy Engine(引擎),由引擎交给Spider来处理,
  • Spider(爬虫):它负责处理所有Responses,从中分析提取数据,获取Item字段需要的数据,并将需要跟进的URL提交给引擎,再次进入Scheduler(调度器),
  • Item Pipeline(管道):它负责处理Spider中获取到的Item,并进行进行后期处理(详细分析、过滤、存储等)的地方.
  • DownloaderMiddlewares(下载中间件):你可以当作是一个可以自定义扩展下载功能的组件。Spider Middlewares(Spider中间件):你可以理解为是一个可以自定扩展和操作引擎和Spider中间通信的功能组件(比如进入Spider的Responses;和从Spider出去的Requests

一。安装

pip install Twisted.whl

pip install Scrapy

Twisted的版本要与安装的python对应,https://jingyan.baidu.com/article/1709ad8027be404634c4f0e8.html

二。代码

本实例采用xpaths解析页面数据

按住shift-右键-在此处打开命令窗口

输入scrapy startproject qiushibaike 创建项目

输入scrapy genspiderqiushibaike 创建爬虫

1>结构

Python scrapy爬取小说代码案例详解

2>qiushibaike.py爬虫文件

import scrapy
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders.crawl import Rule, CrawlSpider

class BaiduSpider(CrawlSpider):
  name = 'qiushibaike'
  allowed_domains = ['qiushibaike.com']
  start_urls = ['https://www.qiushibaike.com/text/']#启始页面
#        
  rules= (
    Rule(LinkExtractor(restrict_xpaths=r'//a[@class="contentHerf"]'),callback='parse_item',follow=True),
    Rule(LinkExtractor(restrict_xpaths=r'//ul[@class="pagination"]/li/a'),follow=True)
  )

  def parse_item(self, response):
    title=response.xpath('//h1[@class="article-title"]/text()').extract_first().strip() #标题
    time=response.xpath(' //span[@class="stats-time"]/text()').extract_first().strip() #发布时间
    content=response.xpath('//div[@class="content"]/text()').extract_first().replace('','\n') #内容
    score=response.xpath('//i[@class="number"]/text()').extract_first().strip() #好笑数

    yield({"title":title,"content":content,"time":time,"score":score});

3>pipelines.py 数据管道[code]class QiushibaikePipeline:

class QiushibaikePipeline:
  def open_spider(self,spider):#启动爬虫中调用
    self.f=open("xiaoshuo.txt","w",encoding='utf-8')
  def process_item(self, item, spider):
    info=item.get("title")+"\n"+ item.get("time")+" 好笑数"+item.get("score")+"\n"+ item.get("content")+'\n'
    self.f.write(info+"\n")
    self.f.flush()
  def close_spider(self,spider):#关闭爬虫中调用
    self.f.close()

4>settings.py

开启ZhonghengPipeline

ITEM_PIPELINES = {
  'qiushibaike.pipelines.QiushibaikePipeline': 300,
}

5>0main.py运行

from scrapy.cmdline import execute
execute('scrapy crawl qiushibaike'.split())

6>结果:

生成xiaohua.txt,里面有下载的笑话文字

Python scrapy爬取小说代码案例详解

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

Python 相关文章推荐
Python时区设置方法与pytz查询时区教程
Nov 27 Python
零基础写python爬虫之爬虫的定义及URL构成
Nov 04 Python
Python3.2中的字符串函数学习总结
Apr 23 Python
python利用拉链法实现字典方法示例
Mar 25 Python
让Python更加充分的使用Sqlite3
Dec 11 Python
Python查看微信撤回消息代码
Jun 07 Python
Django 路由控制的实现
Jul 17 Python
下载与当前Chrome对应的chromedriver.exe(用于python+selenium)
Jan 14 Python
python实现跨excel sheet复制代码实例
Mar 03 Python
jupyter实现重新加载模块
Apr 16 Python
零基础学Python之前需要学c语言吗
Jul 21 Python
pycharm2020.1.2永久破解激活教程,实测有效
Oct 29 Python
使用Python实现微信拍一拍功能的思路代码
Jul 09 #Python
pytorch 多分类问题,计算百分比操作
Jul 09 #Python
详解Python 循环嵌套
Jul 09 #Python
keras分类之二分类实例(Cat and dog)
Jul 09 #Python
python中tkinter窗口位置\坐标\大小等实现示例
Jul 09 #Python
Python2.x与3​​.x版本有哪些区别
Jul 09 #Python
浅谈keras中Dropout在预测过程中是否仍要起作用
Jul 09 #Python
You might like
php封装的单文件(图片)上传类完整实例
2016/10/18 PHP
phpmyadmin下载、安装、配置教程
2017/05/16 PHP
静态图片的十一种滤镜效果--不支持Ie7及非IE浏览器。
2007/03/06 Javascript
JavaScript 基础篇之运算符、语句(二)
2012/04/07 Javascript
浅析JavaScript中的类型和对象
2013/11/29 Javascript
JS阻止冒泡事件以及默认事件发生的简单方法
2014/01/17 Javascript
Ionic实现仿通讯录点击滑动及$ionicscrolldelegate使用分析
2016/01/18 Javascript
详解JavaScript的AngularJS框架中的作用域与数据绑定
2016/03/04 Javascript
浅谈vue自定义全局组件并通过全局方法 Vue.use() 使用该组件
2017/12/07 Javascript
vue2.0获取鼠标位置的方法
2018/09/13 Javascript
JavaScript链式调用实例浅析
2018/12/19 Javascript
jQuery实现模拟搜索引擎的智能提示功能简单示例
2019/01/27 jQuery
微信小程序 调用微信授权窗口相关问题解决
2019/07/25 Javascript
vue离开当前页面触发的函数代码
2020/09/01 Javascript
用Python编写脚本使IE实现代理上网的教程
2015/04/23 Python
实例说明Python中比较运算符的使用
2015/05/13 Python
两个使用Python脚本操作文件的小示例分享
2015/08/27 Python
python迭代器与生成器详解
2016/03/10 Python
matplotlib绘制符合论文要求的图片实例(必看篇)
2017/06/02 Python
Python入门之三角函数tan()函数实例详解
2017/11/08 Python
python实现SOM算法
2018/02/23 Python
Redis使用watch完成秒杀抢购功能的代码
2018/05/07 Python
详解Python 正则表达式模块
2018/11/05 Python
python交换两个变量的值方法
2019/01/12 Python
Python实现字符串匹配的KMP算法
2019/04/04 Python
Python 网络编程之UDP发送接收数据功能示例【基于socket套接字】
2019/10/11 Python
Django之form组件自动校验数据实现
2020/01/14 Python
如何解决python多种版本冲突问题
2020/10/13 Python
台湾家适得:Homeget
2019/02/11 全球购物
计算机应用专业推荐信
2013/11/13 职场文书
4S店售后客服自我评价
2014/04/09 职场文书
学生会宣传部部长竞选演讲稿
2014/04/25 职场文书
伦敦奥运会口号
2014/06/13 职场文书
社区创先争优承诺书
2014/08/30 职场文书
离婚协议书范本2014
2014/10/27 职场文书
标准版个人借条怎么写?以及什么是借条?
2019/08/28 职场文书