1.分析页面确定爬取思路
我们要抓取的页面很简单如下所示:
首先页面没有使用任何的动态加载的技术,我们能够使用正则直接匹配,另外我们翻页也能够使用改变 url 的 offset 来实现
思路梳理:
(1)请求第一页得到源代码进行下一步分析
(2)获取首页内容并改变 URL 链接准备下一页的请求
(3)获取下一页源代码
(4)将结果保存为文件格式或者存储进数据库
3.scrapy 的初次使用
创建项目
>>scrapy startproject quotetutorial
>>cd quotetutorial
>>scrapy genspider quotes quotes.toscrape.com
使用 pycharm 打开项目
定义存储结构
编写页面解析函数
使用 scrpay shell 进行交互测试
>>scrapy shell quotes.toscrape.com
运行我们的“简陋”的爬虫
>>scrapy crawl quotes
我们可以看到我们想要抓取的第一页的结果已经大致上输出了
完善我们的爬虫实现每一页的抓取
将我们爬取到的数据保存
>>scrapy crawl quotes -o quotes.json
除了能保存成 json 后缀的文件以外,我们还能保存成 jl(jsonline,每一行都是一条 json ),或者是 csv 格式,再或者是 xml 格式等,甚至还支持保存到远程 ftp 服务器的形式
-o ftp://user:pass@ftp.example.com/path/quotes.json
对获取到的数据进行其他的处理
如果有一些 item 是我们不想要的,或者是我们想把 item 保存到数据库的话,上面的方法似乎就不是那么适用了,我们就要借助于 scrapy 给我们提供的另一个组件 pipelines.py 帮我们实现
比如我们现在有这样的需求,我们想把名言超出我们规定的长度的部分删除,并且加上三个省略号
另外我们如果还想存储进数据库的话,我们还要自己写一个 pipeline
数据库的设置我们需要在 settings.py 中添加配置项
MONGO_URL = 'localhost'
MONGO_DB = 'quotes'
然后是我们需要在 settings.py 中开启启动 pipeline 的选项,使我们的配置生效
2.最终代码实现
quotes.py
items.py
pipelines.py
3.最终运行效果