一.scrapy简介

scrapy结构

items.py:用来存放爬虫爬取下来数据的模型
middlewares.py:用来存放各种中间件的文件
pipelines.py:用来将items的模型存储到本地磁盘中
settings.py:本爬虫的一些配置信息(比如请求头、多久发送一次请求、IP代理池等)
scrapy.cfg:项目的配置文件
spiders包:以后所有的爬虫都是存放到这里

二.目标

爬取https://www.xyyuedu.com/wgmz/dongyeguiwu/mimi/284492.html
网页小说并下载为json文件

三.代码

首先我们进入网页,创建python文件mimi.py,初始网址为https://www.xyyuedu.com/wgmz/dongyeguiwu/mimi/284492.html

    start_urls = ['https://www.xyyuedu.com/wgmz/dongyeguiwu/mimi/284492.html']

进入开发者模式后,使mimidiv为下述xpath地址后,在其中for循环,找到目录章节和内容以及下一篇的xpath地址。
接下来我们到最后一章,发现“下一篇”并没有href链接,那么我们可以用下述代码来表示是否回调。

        if not next_url:returnelse:yield scrapy.Request(next_url,callback=self.parse)

故mimi.py全部代码如下:

# -*- coding: utf-8 -*-
import scrapy
from lxml import etree
from scrapy.http.response.html import HtmlResponse
from scrapy.selector.unified import SelectorList
from mimipassage.items import MimipassageItem
class MimiSpider(scrapy.Spider):name = 'mimi'allowed_domains = ['www.xyyuedu.com']start_urls = ['https://www.xyyuedu.com/wgmz/dongyeguiwu/mimi/284492.html']def parse(self, response):mimidiv=response.xpath("//div[@class='main-wrap']")for mimi in mimidiv:title = response.xpath("//div[@class='main-wrap']/div[@id='arcxs_title']/h1//text()").get().strip()content=response.xpath(".//div[@class='onearcxsbd']//text()").getall()content="".join(content).strip()item=MimipassageItem(title=title,content=content)yield itemnext_url1=response.xpath(".//div[@class='mzpage']/b[2]/a[@class='prevPage'][last()]/@href").get()next_url='https://www.xyyuedu.com'+next_url1if not next_url:returnelse:yield scrapy.Request(next_url,callback=self.parse)

接下来我们设置items.py文件,因为只爬取了标题和内容:

# -*- coding: utf-8 -*-# Define here the models for your scraped items
#
# See documentation in:
# https://docs.scrapy.org/en/latest/topics/items.htmlimport scrapyclass MimipassageItem(scrapy.Item):# define the fields for your item here like:# name = scrapy.Field()title=scrapy.Field()content=scrapy.Field()

在pipelines.py中,我们是要保存为json模式:

# -*- coding: utf-8 -*-# Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: https://docs.scrapy.org/en/latest/topics/item-pipeline.html
import json
from scrapy.exporters import JsonItemExporterclass MimipassagePipeline:def __init__(self):self.fp=open("mimipp.json","wb")self.exporter=JsonItemExporter(self.fp,ensure_ascii=False,encoding="utf-8")def process_item(self, item, spider):self.exporter.export_item(item)return itemdef close_spider(self):self.exporter.finish_exporting()

在settings.py中有几处需要更改的地方:

ROBOTSTXT_OBEY = False
DOWNLOAD_DELAY = 1
DEFAULT_REQUEST_HEADERS = {'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8','Accept-Language': 'en',
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36'
}
ITEM_PIPELINES = {'mimipassage.pipelines.MimipassagePipeline': 300,
}

最后,您既可以在命令中运行:

scrapy crawl mimi

也可以创建一个start.py文件运行:

from scrapy import cmdline
cmdline.execute("scrapy crawl mimi".split(" "))


至此,简单的运用scrapy框架爬取小说到此为止,其中不乏错误与不足之处,也是因为笔者仍在学习当中,还未钻研透彻。平等探讨,欢迎至极,出口伤人,避之不及。
非常感谢您的停留,如果喜欢,我很高兴,谢谢!

简单的scrapy爬取下载小说相关推荐

  1. scrapy爬取起点小说网

    闲来无事,在学习过程中练习用scrapy爬取起点小说名 工具:python3.6 操作系统:linux 浏览器:谷歌浏览器 创建项目 在黑屏终端创建一个项目:scrapy startproject Q ...

  2. Scrapy 爬取盗墓笔记小说

    Scrapy 爬取盗墓笔记小说 应用 Scrapy框架 爬取盗墓笔记小说数据,存入MongoDB 数据库. # settings 配置mongodb MONGODB_HOST = '127.0.0.1 ...

  3. Scrapy爬取顶点小说网

    Scrapy爬取小说 爬取目标:顶点小说网 1.Scrapy的安装 pip install scrapy 2.Scrapy的介绍 创建项目 scrapy startproject xxx xxx项目名 ...

  4. Scrapy爬取顶点小说

    一.目标地址:www.23us.so/ 二.准备工作 1.开发环境 MacOS + PyCharm + Python3.5.3 + Scrapy + MySQL 2.安装Scrapy和MySQL自行解 ...

  5. scrapy爬取百万小说

    #爬取小说实列 第一步:创建一个scrapy工程[命令行中输入 scrapy startproject demo] 第二步:进入这个工程中,创建一个爬虫[scrapy nss zhuangji.org ...

  6. python爬网页、爬到前几个就不动了_python scrapy 爬取起点小说,爬虫停止在第四页不动了...

    如题,我在测试爬虫的时候,终端出现了如下代码: 2019-04-20 15:04:51 [scrapy.core.engine] DEBUG: Crawled (200) (referer: http ...

  7. 起点小说免费看 Scrapy爬取起点小说网数据导入MongoDB数据

    本文中我们将详细介绍使用Scrapy抓取数据并存入MongoDB数据库,首先给出我们需要抓取得数据: 抓取起点网得全部作品,网址为:https://www.qidian.com/all 关于Scrap ...

  8. python如何利用scrapy爬取纵横小说三级链接内容并存储到数据库

    效果展示 settings.py# Scrapy settings for zongheng project # # For simplicity, this file contains only s ...

  9. 练手实例:Scrapy爬取一本完整小说(章节乱序问题解决)

    戳这里查看此小说 整体都很简单,没啥多说的,10分钟搞定 外循环在主页面找url进行拼接,小循环解析详细页内容提取小说文本. biquge.py import scrapy from scrapy.s ...

最新文章

  1. 如果足够准的话,还有比体脂秤更好的身体数据采集器吗?
  2. 虚析构函数? vptr? 指针偏移?多态数组? delete 基类指针 内存泄漏?崩溃?...
  3. 【最新合集】PAT乙级最优题解(题解+解析+代码)
  4. minecraft正版整合包服务器,我的世界1.7.2基佬整合包
  5. 资深大牛带你了解源码!关于Android程序员最近的状况,大厂内部资料
  6. 分布式交换机配置备份和还原
  7. 财务自由的味道!台积电股价连创新高,经营团队15人持股价值过亿
  8. C语言小技巧之怎么找到需要的部分
  9. ZZULIOJ 1917: E
  10. linux采用scp命令拷贝文件到本地,拷贝本地文件到远程服务器
  11. VScode C语言环境搭建教程
  12. 最详细教学--实现win10 多用户同时远程登录内网机--win10+frp+rdpwrap+阿里云服务器
  13. C语言在当代人工智能背景下的作用,人工智能c语言新手入门
  14. 你的独立思考能力正在被它吞噬掉
  15. 视频教程-ps基础课程绝对初级,小白听得懂-Photoshop
  16. 多臂赌博机问题代码实践
  17. 7人团队敏捷管理手册
  18. 为什么引入非线性激励函数?
  19. 基于51单片机的水塔水箱液水位监测控制系统无线WIFI报警
  20. 机器学习读书笔记:假设检验(二)

热门文章

  1. 华夏 JSH_ERP(二)表格弹窗popupJsh与选中
  2. asp.net919-凤凰社区流动人口管理系统
  3. 阿里云部署redis
  4. Unhandled exception in ***.exe(OLE32.DLL):0xC0000005:Access Violation解决办法
  5. H264 NALU starting code 搜索优化
  6. 日语语法(九):日语的构词法
  7. windbg入门教程之获取异常报告
  8. fatal error: module file '/Users/cylm/Library/Developer/Xcode/DerivedData/ModuleCache/35BFEUGU7C7G3/
  9. java前台构建_Java编程第43讲——实现前端后一体的Web服务器
  10. 从零学习VH6501(七) —— Bus Off 的基本理解和测试用例设计