使用Scrapy爬取励志名句————祝万千学子高考顺利

2023-11-09

6月7日,2021年全国高考正式拉开大幕,1078万考生将赶赴考场,迎接人生路上的一次大考。在此,我将使用Scrapy爬取一些励志名句献给广大的高考考生,祝他们高考顺利,学业有成!

流程分析

创建项目
创建爬虫程序
进行初始化设置
分析网页并创建Item
代码实现

创建项目

首先,我们要创建一个项目,通过下面的命令来实现创建项目:

scrapy startproject gsw

执行上述代码后,可以看到在文件下创建了一个名为gsw的项目文件夹,其目录结构如下:
在这里插入图片描述

创建爬虫程序

创建好项目后,我们需要先创建一个爬虫程序,之后用来解析网页数据以及生成新的请求。
执行以下代码创建爬虫程序:

cd gsw
scrapy genspider start so.gushiwen.cn

进入刚才创建的gsw文件夹,然后执行genspider命令,第一个参数是spider的名称,第二个参数是网站域名。执行后会在spiders文件夹中生成一个start,也就是刚刚创建的爬虫程序。

进行初始化配置

我们可以在settings.py文件中进行一些配置,例如可以设置日志等级,添加请求头等,具体如下:

ROBOTSTXT_OBEY = False
LOG_LEVEL = 'WARNING'
# 打开项目管道
ITEM_PIPELINES = {
   'gsw.pipelines.GswPipeline': 300,
}
# 添加请求头
DEFAULT_REQUEST_HEADERS = {
   'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36 Edg/91.0.864.41',
   'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
   'Accept-Language': 'en',
}

分析网站并创建Item

查看网页源代码可以发现,所有的数据都在一个class为son的div标签当中,我们可以先获取到该div,然后遍历其中所有的class为cont的div标签,从中提取相应数据。在此,我们需要提取的数据有诗句以及出处。因此,我们可以在Items中这样写:

import scrapy

class GswItem(scrapy.Item):
    content = scrapy.Field()
    source = scrapy.Field()

代码实现

至此,我们就可以开始编写代码了。

首先在start.py中添加如下代码:

import scrapy
from gsw.items import GswItem


class StartSpider(scrapy.Spider):
    name = 'start'
    allowed_domains = ['so.gushiwen.cn']
    start_urls = ['https://so.gushiwen.cn/mingjus/default.aspx?tstr=%e5%8a%b1%e5%bf%97']

    def parse(self, response):
        item = GswItem()
        divs = response.xpath('//div[@class="left"]/div[@class="sons"]/div[@class="cont"]')
        for div in divs:
            item['content'] = div.xpath('./a/text()').extract()[0]
            item['source'] = div.xpath('./a/text()').extract()[1]
            yield item

在pipelines.py文件中添加如下代码:

class GswPipeline:
    def process_item(self, item, spider):
        with open('result.txt','a',encoding='utf-8') as f:
            f.write(item['content']+item['source']+'\n')
        return item

运行结果后,会在gsw目录下生成result.txt文件,结果如下:
在这里插入图片描述

爬取多页数据

我们可以通过构造新的URL去爬取多页数据,这里提供两种方法,一是分析网页URL规律,二是从响应数据中提取新的URL。在此,我们使用第二种方法。新增代码如下:

href = response.xpath('//div[@class="pagesright"]/a[1]/@href').extract_first()
url = response.urljoin(href)
yield scrapy.Request(url)

这样就可以实现多页爬取,运行程序后,即可爬取多页数据,最终结果如下:
在这里插入图片描述

结语

到此,我们的项目就全部结束了,最后借用韩愈的“口衔山石细,心望海波平”祝各位高考学子都拥有远大志向,榜上有名,考入心中理想的大学!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用Scrapy爬取励志名句————祝万千学子高考顺利 的相关文章

  • 子查询返回的值不止一个如何处理_从零学会SQL:复杂查询

    一 视图 视图作用 链接数据库与客户 查询时候表中存放的是临时数据 视图可以存放SQL查询语句 避免重复反复输入 降低工作量 SQL语句范例 create view 按性别汇总 性别 人数 as select 性别 count from s
  • 《区块链技术与应用》课堂笔记(五):比特币系统的实现原理

    区块链是一个去中心化的账本 比特币采用了 基于交易的账本模式 transaction based ledger 只记录了转账交易和铸币交易 并没有直接记录每个账户上有多少钱 如果想知道某个比特币账户上有多少钱 要通过交易记录来推算 UTXO
  • vivo 2020届校招在线编程笔试

    题目 运矿车 小v最近在玩一款挖矿的游戏 该游戏介绍如下 1 每次可以挖到多个矿石 每个矿石的重量都不一样 挖矿结束后需要通过一款平衡矿车运送下山 2 平衡矿车有左右2个车厢 中间只有1个车轮沿着导轨滑到山下 且矿车只有在2个车厢重量完全相
  • java实现输出1--100之间的质数

    输出1 100之间的质数 大于1 只能被1和本身整除的 再没有其他因数的数 迭代1 100 每个数都被小于它的数取余一遍 如果有一个为0 则跳出本次循环 都不为0则输出 public static void main String args
  • 学习笔记——Windows CMD设置为UTF-8编码

    Windows CMD设置为UTF 8编码 windows下的cmd的默认编码是GBK编码 有时可能造成乱码问题 下面是我找到的两种更换编码方式为UTF 8的方法 1 临时修改 1 先进入cmd命令窗口 快捷键win键 R 2 直接输入 c
  • LogStash 启动报错

    报错信息如下 exception gt LogStash ConfigLoadingError message gt The following config files contains non ascii characters but
  • Ubuntu搭建Nginx服务器

    Ubuntu搭建Nginx服务器 安装Nginx 配置文件 全局配置文件 子配置文件管理 sites availables和sites enabled default配置文件 启动 停止 重启Nginx 启动 停止 重启 查询 其他设置 自

随机推荐

  • macbookpro接口叫什么_【科普】什么是雷电接口?苹果电脑MACBOOK PRO有吗?

    刚接触笔记本的朋友不知道USB C口是什么 也不知道雷电接口 Thunderbolt 是什么 只知道MACBOOK PRO有雷电3接口 简单来说 雷电接口是USB TYPE C的替代模式 在此了解 什么是USB TYPE C 什么是雷电接口
  • 二叉树前中后层序遍历,迭代实现

    文章目录 前序遍历 代码 Python 代码 C 中序遍历 代码 Python 代码 C 后序遍历 代码 C 后序遍历 进阶写法 代码 Python 代码 C 层序遍历 代码 Python 代码 C 总结 上一篇文章介绍了二叉树的几种遍历方
  • 简历被pass,笔试被淘汰,还有什么办法能直通面试?

    互联网是目前的热门行业 越来越多的年轻人也是一心想要往上扑 1 互联网行业处于成长期 科技行业扶持力度大 未来整个行业的上升空间巨大 我们都知道 两个人同时出发 搭乘巨轮比乘坐小船更容易走的更快更远 互联网行业就是那搜巨轮 借力使力 越早上
  • C++数据结构X篇_09_C++实现队列的顺序存储与链式存储

    本篇参考C 实现队列的顺序存储与链式存储整理 先搞懂结构框架 后期根据视频利用c对内容实现 也可以对c有更高的提升 文章目录 1 顺序存储 2 链式存储 队列是一种特殊的数据存储结构 与栈不同的是其数据存储与访问顺序为先进先出 形式如下 下
  • linux 块设备 dm,[CentOS7]dm块设备删除

    报错 root node 3 dev lsblk lsblk dm 3 获取设备路径失败 lsblk dm 3 获取设备路径失败 查看映射信息并删除 root node 3 dev dmsetup ls ceph adb6548e 8602
  • 读取resource根目录下的配置文件---标准

    读取配置文件 fileName conf json public String getConf String fileName String content try jsonFile ResourceUtils getFile classp
  • 快速排序-递归与分治

    include
  • 服务器虚拟化和桌面虚拟化

    服务器虚拟化和桌面虚拟化依托的都是KVM架构 两者的底层的东西是一样的 只不过是人为的将这个底层系统二次开发成不同的系统版本 有些功能做了限制 有些做了优化 这样的好处是 不同的场景可以使用不同的虚拟化系统 更好的满足客户的需求和发挥不同系
  • 织梦搜索时因关键词标红而导致页面样式错乱的解决方法

    使用织梦默认的搜索功能时 发现搜索某一关键词时 搜索展示页面样式错乱了 经过排查 确定是关键词标红引起的 出现此问题的原因 织梦搜索页面会将搜索关键词进行标红 字体颜色改为红色 处理 在代码中体现出来就是将关键词文字替换为套上font标签的
  • 对华为路由器配置DHCP实现IP地址的自动分配

    目录 0 题目 1 首先按照题意建立如下拓扑图 并划分子网 2 为路由器AR1进行基础设置 1 将系统名称改为r1 2 设置超时时长为0 永不超时 3 为路由器AR1两个接口配置IP地址 1 GE 0 0 0 2 GE 0 0 1 3 检查
  • 处理不同的请求--设置content-type

    content type的作用 在http协议中 content type用来告诉对方本次传输的数据的类型是什么 在请求头中设置content type来告诉服务器 本次请求携带的数据是什么类型的 在响应头中设置content type来告
  • 写在28岁,回看3年前的自己,庆幸当时入了软件测试这行

    为什么会学习软件测试 已经28岁了 算一下快过去3年了 刚毕业那会工作了一年 因为自己当时很迷茫 觉得自己挺废的 所以就没去工作就一直在家 家里固定每个月给点生活费 但还是没钱 但家里给了我一套房子 出门300米左右就是地铁站 自己一个人住
  • Java框架--Spring(轻量级容器框架)(入门+ioc)

    目录 一 概念 海绵hong对于ioc的理解 二 spring快速入门 1 最基本的spring实例 1 1javabean类 1 2beans xml 1 3 ioc容器使用 2 spring 容器结构 机制 2 1beanDefinit
  • kmalloc使用相关

    Kmalloc内存分配和malloc相似 除非被阻塞否则他执行的速度非常快 而且不对获得空间清零 Flags参数 include
  • swin-transformer训练自己的数据集<自留>

    使用swin transformer训练自己的数据集 lt 自留 gt 前期准备 数据处理 标注数据集 一 结构目录 二 要修改的地方 三 开始训练 四 训练过程结果 前期准备 数据处理 标注数据集 LabelMe gt COCO Labe
  • 24岁,月入15000:真正优秀的人,都在做一件事

    昨天 一位经常来转载我文章的编辑朋友找我聊了会 聊完之后 很想写篇文章来谈谈我内心的感受 他告诉我 下个月就要去深圳了 那边有一家公司希望他过去 毕业两年 24岁 月收入稳定在15000 用 年轻有为 来形容他 我觉得并不为过 和他相比起来
  • 服务器系统水星无线网卡,水星设置远程服务器

    水星设置远程服务器 内容精选 换一换 本章节介绍Dubbo框架下DTM使用的demo 使得Dubbo框架下的项目可以通过TCC模式快速接入DTM 其中 Dubbo的样例代码在导入样例工程过程中准备的dtm demo的dtm dubbo项目中
  • Tomcat安装及基本使用

    1 什么是Web服务器 Web服务器是一种应用程序 软件 它封装了对HTTP协议的操作 使得开发人员无需直接操作协议 从而简化了Web开发 其主要功能是提供网上信息浏览服务 Web服务器安装在服务器端 我们可以将自己编写的Web项目部署到W
  • 概率与统计之一 标准差(standard deviation)和标准误(standard error)

    标准差和标准误差 标准差 standard deviation 和标准误差 standard error of mean 根据国际标准化组织 ISO 的定义 标准差 是方差 2的正平方根 而方差是随机变量期望的二次偏差的期望 什么是标准误差
  • 使用Scrapy爬取励志名句————祝万千学子高考顺利

    6月7日 2021年全国高考正式拉开大幕 1078万考生将赶赴考场 迎接人生路上的一次大考 在此 我将使用Scrapy爬取一些励志名句献给广大的高考考生 祝他们高考顺利 学业有成 流程分析 创建项目 创建爬虫程序 进行初始化设置 分析网页并