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
投稿

猜你喜欢

  • Python中PyAutoGUI帮助文档(推荐!)

    2022-12-18 20:50:16
  • Python通过4种方式实现进程数据通信

    2023-11-04 15:13:48
  • 提高网页加载显示速度的方法

    2007-08-10 13:17:00
  • perl特殊符号及默认的内部变量

    2023-08-08 02:13:20
  • python目标检测SSD算法训练部分源码详解

    2021-08-01 02:23:15
  • PHP如何从txt文件中读取数据详解

    2023-11-15 02:37:32
  • 在Debian下配置Python+Django+Nginx+uWSGI+MySQL的教程

    2023-04-22 23:03:44
  • Django框架静态文件处理、中间件、上传文件操作实例详解

    2021-03-07 14:31:04
  • Python使用Appium在移动端抓取微博数据的实现

    2022-11-27 20:30:40
  • 详解python中的模块及包导入

    2023-12-05 08:20:16
  • 如何使用微信公众平台开发模式实现多客服

    2023-11-14 17:48:37
  • python sleep和wait对比总结

    2023-04-30 18:26:04
  • 基于np.arange与np.linspace细微区别(数据溢出问题)

    2021-08-29 23:46:25
  • Python爬虫框架Scrapy安装使用步骤

    2022-02-23 13:49:09
  • Js实现简单的小球运动特效

    2023-07-08 23:40:40
  • 网页制作了解什么是CSS hack?

    2007-10-21 08:52:00
  • Python中Flask-RESTful编写API接口(小白入门)

    2023-02-07 10:47:46
  • 深入分析在Python模块顶层运行的代码引起的一个Bug

    2021-06-29 01:26:29
  • 深入探讨:PHP使用数据库永久连接方式操作MySQL的是与非

    2023-11-20 22:41:16
  • python函数默认参数使用避坑指南

    2023-06-19 13:37:50
  • asp之家 网络编程 m.aspxhome.com