(python爬虫框架scrapy)(python爬虫框架scrapy教程交流)

1.分析页面确定爬取思路

我们要抓取的页面很简单如下所示:

(python爬虫框架scrapy)(python爬虫框架scrapy教程交流)

首先页面没有使用任何的动态加载的技术,我们能够使用正则直接匹配,另外我们翻页也能够使用改变 url 的 offset 来实现

(python爬虫框架scrapy)(python爬虫框架scrapy教程交流)

思路梳理:

(1)请求第一页得到源代码进行下一步分析

(2)获取首页内容并改变 URL 链接准备下一页的请求

(3)获取下一页源代码

(4)将结果保存为文件格式或者存储进数据库

3.scrapy 的初次使用

创建项目

>>scrapy startproject quotetutorial

>>cd quotetutorial

>>scrapy genspider quotes quotes.toscrape.com

使用 pycharm 打开项目

(python爬虫框架scrapy)(python爬虫框架scrapy教程交流)

定义存储结构

(python爬虫框架scrapy)(python爬虫框架scrapy教程交流)

编写页面解析函数

(python爬虫框架scrapy)(python爬虫框架scrapy教程交流)

使用 scrpay shell 进行交互测试

>>scrapy shell quotes.toscrape.com

(python爬虫框架scrapy)(python爬虫框架scrapy教程交流)

运行我们的“简陋”的爬虫

>>scrapy crawl quotes

(python爬虫框架scrapy)(python爬虫框架scrapy教程交流)

我们可以看到我们想要抓取的第一页的结果已经大致上输出了

完善我们的爬虫实现每一页的抓取

(python爬虫框架scrapy)(python爬虫框架scrapy教程交流)

将我们爬取到的数据保存

>>scrapy crawl quotes -o quotes.json

(python爬虫框架scrapy)(python爬虫框架scrapy教程交流)

除了能保存成 json 后缀的文件以外,我们还能保存成 jl(jsonline,每一行都是一条 json ),或者是 csv 格式,再或者是 xml 格式等,甚至还支持保存到远程 ftp 服务器的形式

-o ftp://user:pass@ftp.example.com/path/quotes.json

对获取到的数据进行其他的处理

如果有一些 item 是我们不想要的,或者是我们想把 item 保存到数据库的话,上面的方法似乎就不是那么适用了,我们就要借助于 scrapy 给我们提供的另一个组件 pipelines.py 帮我们实现

比如我们现在有这样的需求,我们想把名言超出我们规定的长度的部分删除,并且加上三个省略号

(python爬虫框架scrapy)(python爬虫框架scrapy教程交流)

另外我们如果还想存储进数据库的话,我们还要自己写一个 pipeline

(python爬虫框架scrapy)(python爬虫框架scrapy教程交流)

数据库的设置我们需要在 settings.py 中添加配置项

MONGO_URL = 'localhost'

MONGO_DB = 'quotes'

然后是我们需要在 settings.py 中开启启动 pipeline 的选项,使我们的配置生效

(python爬虫框架scrapy)(python爬虫框架scrapy教程交流)

2.最终代码实现

quotes.py

(python爬虫框架scrapy)(python爬虫框架scrapy教程交流)

items.py

(python爬虫框架scrapy)(python爬虫框架scrapy教程交流)

pipelines.py

(python爬虫框架scrapy)(python爬虫框架scrapy教程交流)

3.最终运行效果

(python爬虫框架scrapy)(python爬虫框架scrapy教程交流)

声明:我要去上班所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流,版权归原作者用户95877765594所有,原文出处。若您的权利被侵害,请联系删除。

本文标题:(python爬虫框架scrapy)(python爬虫框架scrapy教程交流)
本文链接:https://www.51qsb.cn/article/dvjty9.html

(0)
打赏微信扫一扫微信扫一扫QQ扫一扫QQ扫一扫
上一篇2023-08-26
下一篇2023-08-26

你可能还想知道

发表回复

登录后才能评论