使用scrapy框架爬取名句,在这里只爬取的了名句和出处两个字段。具体解析如下:
items.py 用来存放爬虫爬取下来的数据模型,代码如下:

import scrapyclass QsbkItem(scrapy.Item):content = scrapy.Field()auth = scrapy.Field()

piplines.py 将items的模型存储到json格式的文件中,有两种方法JsonItemExporter和JsonLinesExporter

1.JsonItemExporter,这个是每次把数据添加到内存中,最后统一写入到磁盘中,好处是,存储的数据是一个满足json规则的数据,坏处是如果数据量比较大,会比较的耗费内存

2.JsonLinesItemExporter这个是每次调用export_item的时候就把这个数据存储到硬盘中,坏处是每一个字典是一行,整个文件是一个满足json格式的文件,好处是每次从处理数据的时候就直接存储到了硬盘中,这样不会对内存造成压力,数据比较安全

# 数据量多的时候写入,按行写入
from scrapy.exporters import JsonLinesItemExporterclass QsbkPipeline(object):def __init__(self):self.fp = open('mj.json', 'wb')self.exporter = JsonLinesItemExporter(self.fp, ensure_ascii=False, encoding="utf-8")def open_spider(self, spider):print("爬虫开始了、、、")def process_item(self, item, spider):self.exporter.export_item(item)return itemdef close_spider(self, spider):print("爬虫结束了、、、")
# 使用导出器
from scrapy.exporters import JsonItemExporter# 适用于数据量较少
# 下面的方法是把所有的数据都存储在item中,然后在一次性写入
# 若数据较大则会比较耗费内存
class QsbkPipeline(object):def __init__(self):self.fp = open('mj.json', 'wb')self.exporter = JsonItemExporter(self.fp, ensure_ascii=False, encoding="utf-8")# 开始写入self.exporter.start_exporting()def open_spider(self, spider):print("爬虫开始了、、、")def process_item(self, item, spider):self.exporter.export_item(item)return itemdef close_spider(self, spider):# 结束写入self.exporter.finish_exporting()print("爬虫结束了、、、")

以上方法可以二选一

settings.py 本爬虫的一些配置信息(比如请求头、多久发送一次请求、ip代理池)对settings.py文件的修改如下

# 项目名称
BOT_NAME = 'qsbk'# 爬虫应用路径
SPIDER_MODULES = ['qsbk.spiders']
NEWSPIDER_MODULE = 'qsbk.spiders'
# 是否遵循reboot.txt协议 True遵循
# Obey robots.txt rules
ROBOTSTXT_OBEY = False
# 下载延迟
DOWNLOAD_DELAY = 2
# 设置请求头信息
# Override the default request headers:
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; WOW64)'' AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36'}

gswspider.py文件,由于网站的限制,若不下载客户端的话最多只能爬取20页的内容,因此编写爬虫如下

# -*- coding: utf-8 -*-
import scrapyfrom qsbk.items import QsbkItemclass GswspiderSpider(scrapy.Spider):# 爬虫的名字name = 'gswspider'# 允许的域名allowed_domains = ['gushiwen.org']# 起始的urlstart_urls = ['https://so.gushiwen.org/mingju/default.aspx?p=1&c=&t=']domains = 'https://so.gushiwen.org'def parse(self, response):# 使用xpath解析网页all_mjs = response.xpath('//div[@class="left"]//div[@class="sons"]//div[@class="cont"]')print(len(all_mjs))for mj in all_mjs:# print(mj)# 使用get()可以从对象转化为文本# ma = {}content = mj.xpath(".//a[1]/text()").get()auth = mj.xpath(".//a[2]/text()").get()# # 变成生成器# yield maitem = QsbkItem(content=content, auth=auth)yield itemnext_url = response.xpath("//*[@id='FromPage']/div/a[1]/@href").get()print("***********************")print(next_url)'''//*[@id="FromPage"]/div/a[1]'''print("***********************")if not next_url:returnelse:p = next_url.split("?")[1].split("&")[0]if p == "p=21":returnelse:yield scrapy.Request(self.domains + next_url, callback=self.parse)

爬虫初学者,若有错误请在评论区指出或者私信我

scrapy框架爬取古诗文网的名句相关推荐

  1. 爬取古诗文网的推荐古诗

    爬取古诗文网的推荐古诗 思路分析 完整代码 结果展示 思路分析 本次的主要目的是练习使用正则表达式提取网页中的数据. 该网站的推荐古诗文一共有10页,页码可以在URL中进行控制,比如说,下面的URL指 ...

  2. Python真香之爬取古诗文网

    最近在学习Python相关,学习了基本的语法后想搞点事情试试,所以来爬取下古诗文网中的相关作者信息 准备资料: 爬取目标:爬取古诗文网的唐代作者的信息 目标分析: 一级页面是所有唐代作者的列表,点击名 ...

  3. Python爬虫 scrapy框架爬取某招聘网存入mongodb解析

    这篇文章主要介绍了Python爬虫 scrapy框架爬取某招聘网存入mongodb解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 创建项目 sc ...

  4. Python使用网络抓包的方式,利用超级鹰平台识别验证码登录爬取古诗文网、上篇--识别验证码

    Python使用网络抓包的方式,利用超级鹰平台识别验证码登录,<爬取古诗文网>. 上篇–识别验证码 序言: 哈喽,各位小可爱们,我又来了,这次我新学习到的内容是python爬虫识别验证码. ...

  5. Python实战---使用正则表达式爬取古诗文网

    使用正则表达式爬取古诗文网 爬取目标 具体字段为: title 标题 dynasty 朝代 author 作者 content 内容 tag 标签 实现代码 ''' @Description: 使用正 ...

  6. 运用Scrapy框架爬取淘车网十七万二手车数据

    本篇内容将使用scrapy框架爬取淘车网所有二手车信息. 下面开始讲解下如何爬取我们想要的数据: 明确爬取目标: 首先,进入官网:https://www.taoche.com/ 进入官网发现,我们要获 ...

  7. Scrapy框架爬取中国裁判文书网案件数据

    Scrapy框架爬取中国裁判文书网案件数据 项目Github地址: https://github.com/Henryhaohao/Wenshu_Spider 中国裁判文书网 - http://wens ...

  8. Python爬虫(一)——爬取古诗文网,初识什么是爬虫

    首先来说下什么是爬虫,按照百度百科的说法是:是一种按照一定规则,自动抓取万维网信息的程序或者脚本:首先它是程序,需要我们定义好规则,然后程序就会按照定义好的规则抓取网络上的信息,数据抓取下来了之后,需 ...

  9. 使用Scrapy框架爬取88读书网小说,并保存本地文件

    Scrapy框架,爬取88读书网小说 链接: 88读书网 源码 工具 python 3.7 pycharm scrapy框架 教程 spider: # -*- coding: utf-8 -*- im ...

最新文章

  1. JQUERY搞的相册导航DEMO教学,总有一款合心意
  2. win10如何查看NVIDIA驱动的版本
  3. wxWidgets:wxStdOutputStreamBuffer类用法
  4. 使用ActionScript实现滤镜效果
  5. 栈的链式存储结构及实现
  6. 用位运算实现求绝对值-有效避开if-else判断
  7. CRF(条件随机场) 学习总结
  8. api-ms-win-crt-runtime-l1-1-0.dll和api-ms-win-downlevel-shlwapi-l1-1-0.dll免费下载
  9. 关于git的cherry-pick命令
  10. unity 0 Asset Store ,package如何快速导入,快捷键
  11. MySQL数据库增删改查的SQL语句
  12. 子列和列_最大子列和
  13. mysql数据血缘分析,数仓字段血缘解析实现—hive版
  14. python 语音处理工具包AudioSegment的基本使用
  15. Linux中离线安装R语言程序包
  16. 文件管理android2.3,ES文件浏览器(ES File Explorer)v4.0.2.3 优化版-好用的安卓文件管理器...
  17. 引用与引用作为函数的参数
  18. 经验,初创公司如何做到完美地招人、挖人
  19. cmd中怎么进mysql
  20. LightOJ1012-Guilty Prince

热门文章

  1. 从零开始搭建CSGO服务器+插件【Centos7 LGSM】
  2. JAVA UTC时间转换格式
  3. Tsukinai的第十七个程序(梅森尼数)
  4. 移动硬盘显示参数错误的文件恢复方法
  5. matlab绘制函数突袭,Matlab绘图初级教程
  6. 生活中的数学问题(六)
  7. 港科喜讯|香港科大10个学科位列香港第1世界前50-QS2022学科排名
  8. 【光环国际】提升领导者魅力与气质有绝招
  9. 软件的高质量意味着高成本?
  10. @NotNull注解不生效