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

作者:咔咔kk 时间:2021-09-18 17:03:52 

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爬取小说代码案例详解

来源:https://www.cnblogs.com/hzcjd/p/12926824.html

标签:Python,scrapy,爬取
0
投稿

猜你喜欢

  • Goland 的安装及激活教程(window、linux下安装)

    2024-05-08 10:51:51
  • python中操作文件的模块的方法总结

    2022-02-01 04:56:14
  • pandas读取csv文件提示不存在的解决方法及原因分析

    2022-10-27 19:08:02
  • MySQL查询冗余索引和未使用过的索引操作

    2024-01-22 22:04:23
  • Vue组件通信方法案例总结

    2023-07-02 16:51:58
  • Python Pygame实战之红心大战游戏的实现

    2023-08-23 02:28:08
  • 详解解Django 多对多表关系的三种创建方式

    2021-03-13 04:59:16
  • Vue+Mock.js模拟登录和表格的增删改查功能

    2024-05-29 22:20:04
  • 如何通过Python实现定时打卡小程序

    2023-10-20 14:11:33
  • 使用Python+selenium实现第一个自动化测试脚本

    2021-01-26 17:52:01
  • pytorch中的 .view()函数的用法介绍

    2022-10-15 19:50:17
  • Python 类的继承实例详解

    2021-04-30 15:54:09
  • JS鼠标3次点击事件实现代码及扩展思路

    2024-03-22 01:55:24
  • Python数字/字符串补零操作实例代码

    2021-07-13 03:16:57
  • Pytorch实现Fashion-mnist分类任务全过程

    2023-07-14 05:12:47
  • Golang中结构体映射mapstructure库深入详解

    2024-04-26 17:34:40
  • 基于Python os模块常用命令介绍

    2023-09-09 01:53:43
  • 找Python安装目录,设置环境路径以及在命令行运行python脚本实例

    2022-06-01 23:28:56
  • matplotlib.pyplot绘图显示控制方法

    2023-07-03 15:44:20
  • Python 25行代码实现的RSA算法详解

    2023-04-06 17:05:58
  • asp之家 网络编程 m.aspxhome.com