使用scrapy爬取长安有妖气小说
目标网站:https://www.snwx3.com/txt/434282.html
第一章地址:https://www.snwx3.com/book/434/434282/92792998.html
最后一章地址:https://www.snwx3.com/book/434/434282/92793103.html
注意查看地址最后的,有规律。
3103-2998+1=106,但是有三章地址是重复的,所有实际有103个地址,103个章节,正好符合目录列表,(多余的这三个章节等爬取下来后再手动删除)
创建项目
scrapy startproject quotetutorial
cd quotetutorial
scrapy genspider quotes www.snwx3.com
项目结构如下:

quotetutorial/start.py文件内容
目的是直接运行这个文件从而运行爬虫,就不用在命令行中运行爬虫了
#!/usr/bin/env python
#-*- coding: utf-8 -*-
from scrapy.cmdline import execute
execute(['scrapy', 'crawl', 'quotes']) # quotes为quotes.py文件中的name变量的值

quotetutorial/quotetutorial/spiders/quotes.py文件内容
#!/usr/bin/env python
#-*- coding: utf-8 -*-
import scrapy
from quotetutorial.items import QuotetutorialItem
class QuotesSpider(scrapy.Spider):
name = 'quotes'
allowed_domains = ['www.snwx3.com']
base_url = "https://www.snwx3.com/book/434/434282/9279"
pages = list(range(2998,3104)) # 遍历页数
def start_requests(self):
# 遍历循环图书索引页
for page in self.pages:
url = self.base_url + str(page) + ".html" # 构造请求地址
print('请求第%s页' % (url))
yield scrapy.Request(url=url, callback=self.parse)
def parse(self, response):
res = response.css('#BookText::text').extract() # 使用浏览器的css选择器功能
# print(res)
item = QuotetutorialItem()
item['text'] = res
yield item
使用浏览器的css选择器功能


quotetutorial/quotetutorial/items.py文件内容
#!/usr/bin/env python
#-*- coding: utf-8 -*-
import scrapy
class QuotetutorialItem(scrapy.Item):
text = scrapy.Field() # 只获取内容,章节标题最后添加
quotetutorial/quotetutorial/pipelines.py文件内容
#!/usr/bin/env python
#-*- coding: utf-8 -*-
import os
class QuotetutorialPipeline:
def process_item(self, item, spider):
base_dir = os.getcwd()
fiename = base_dir + '/new2.txt' # 保存文件到当前目录
with open(fiename, 'a',encoding='utf-8') as f: # 防止乱码
text = "".join(item['text']) # list转str
f.write(text + '\n')
return item
quotetutorial/quotetutorial/settings.py文件内容
ROBOTSTXT_OBEY = False # 设置为False,表示不准收robots.txt规则
ITEM_PIPELINES = {
'quotetutorial.pipelines.QuotetutorialPipeline': 300, # 调用下载
}
最终效果
爬取后的结果是一行一个章节,使用notepad++软件操作,删除空白行,删除掉三个重复的章节,正好103行,表示103个章节,根据目标网站的地址,获取每章的名称,然后使用块编辑复制粘贴到每行的开头,完美。

使用scrapy爬取长安有妖气小说的更多相关文章
- python应用:爬虫框架Scrapy系统学习第四篇——scrapy爬取笔趣阁小说
使用cmd创建一个scrapy项目: scrapy startproject project_name (project_name 必须以字母开头,只能包含字母.数字以及下划线<undersco ...
- Scrapy爬取小说简单逻辑
Scrapy爬取小说简单逻辑 一 准备工作 1)安装Python 2)安装PIP 3)安装scrapy 4)安装pywin32 5)安装VCForPython27.exe ........... 具体 ...
- 小说免费看!python爬虫框架scrapy 爬取纵横网
前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 风,又奈何 PS:如有需要Python学习资料的小伙伴可以加点击下方 ...
- 以豌豆荚为例,用 Scrapy 爬取分类多级页面
本文转载自以下网站:以豌豆荚为例,用 Scrapy 爬取分类多级页面 https://www.makcyun.top/web_scraping_withpython17.html 需要学习的地方: 1 ...
- scrapy 爬取纵横网实战
前言 闲来无事就要练练代码,不知道最近爬取什么网站好,就拿纵横网爬取我最喜欢的雪中悍刀行练手吧 准备 python3 scrapy 项目创建: cmd命令行切换到工作目录创建scrapy项目 两条命 ...
- Scrapy爬取美女图片 (原创)
有半个月没有更新了,最近确实有点忙.先是华为的比赛,接着实验室又有项目,然后又学习了一些新的知识,所以没有更新文章.为了表达我的歉意,我给大家来一波福利... 今天咱们说的是爬虫框架.之前我使用pyt ...
- 【转载】教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神
原文:教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神 本博文将带领你从入门到精通爬虫框架Scrapy,最终具备爬取任何网页的数据的能力.本文以校花网为例进行爬取,校花网:http:/ ...
- scrapy爬取西刺网站ip
# scrapy爬取西刺网站ip # -*- coding: utf-8 -*- import scrapy from xici.items import XiciItem class Xicispi ...
- scrapy爬取豆瓣电影top250
# -*- coding: utf-8 -*- # scrapy爬取豆瓣电影top250 import scrapy from douban.items import DoubanItem class ...
随机推荐
- -bash: nignx: 未找到命令
nignx -t 如果报错: 因为没有配置环境变量吧,把nginx路径 配置到环境变量里面就可以. 按照配置: 1:进入 vim /etc/profile 文件 在配置文件的最后面添加PATH(PAT ...
- 2022-7-15 java 数据结构入门
@ 目录 数据结构 1.二分查找 动图演示: 2.冒泡排序 1.冒泡排序原理 2.冒泡排序基础版 3.冒泡排序代码优化版 4.冒泡排序代码升级版 3.选择排序 1. 算法步骤 2.插入排序图解: 3. ...
- Techempower web框架性能测试第21轮结果发布--asp.net core继续前进
废话不说,直接上结果: Round 21 results - TechEmpower Framework Benchmarks Techempower benchmark是包含范围最广泛的web框架性 ...
- CF1701A Grass Field 题解
根据题意,给定一个 \(2\times2\) 的仅包含 \(0\) 和 \(1\) 的二维数组.定义一个操作,每次可以选择一行和一列将其变成 \(0\),求最小操作次数. 思路:根据枚举可得共有 \( ...
- 推荐系统-协同过滤在Spark中的实现
作者:vivo 互联网服务器团队-Tang Shutao 现如今推荐无处不在,例如抖音.淘宝.京东App均能见到推荐系统的身影,其背后涉及许多的技术.本文以经典的协同过滤为切入点,重点介绍了被工业界广 ...
- 高通cDSP简单编程例子(实现查询高通cDSP使用率、签名),RK3588 npu使用率查询
PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明 本文作为本人csdn blog的主站的备份.(Bl ...
- WPF 截图控件之画笔(八)「仿微信」
前言 接着上周写的截图控件继续更新添加 画笔. 1.WPF实现截屏「仿微信」 2.WPF 实现截屏控件之移动(二)「仿微信」 3.WPF 截图控件之伸缩(三) 「仿微信」 4.WPF 截图控件之绘制方 ...
- 1.2 Hadoop快速入门
1.2 Hadoop快速入门 1.Hadoop简介 Hadoop是一个开源的分布式计算平台. 提供功能:利用服务器集群,根据用户定义的业务逻辑,对海量数据的存储(HDFS)和分析计算(MapReduc ...
- Tracer类定义
这个类主要是用于检测光线是否穿过球体.是核心,所有的碰撞都继承于这个类,书上也阐述了很多.详细就看书. 类定义: #pragma once #ifndef __TRACER_HEADER__ #def ...
- 学习与尝试 --> 事件风暴
事件风暴 1. 基础概念 术语 执行者 -----> 是指执行的角色,系统的主体,是导致系统状态变化的触发源 人员,系统的用户,操作人员等 系统,系统本身执行的,或者调度的,自动触发的 ,第三方 ...