使用scrapy框架进行抓取伯乐在线所有文章(一)

这是跟着相关视频学习进行的代码,(一)学习思路的代码在整个完整代码中存在一部分,如果看到这些内容或思路有不懂的给我下面博客留言。完整代码github地址:https://github.com/spider-liu/jobbole-,主要是作为学习交流之用。

一、scrapy框架简介

scrapy框架是爬取网站、抓取网站、提取结构数据框架

上图为scrapy的结构图

scrapy engine为引擎,主要是作为指挥、传递各部分的通信,进行协调之作用。

scheduler调度器,接受引擎的请求request,将请求request进行队列排序,当引擎需要的请求的 时候,调度器再给引擎。

downloader下载器,负责提取网页并将结果反馈到引擎,然后将其发送给spider。

itempipeline管道,负责spider提取到item,并进行后期的处理(如将项目存在数据库)。

spiders:主要是用户自定义的类,用于解析响应并从中item项目或者其他请求。

当调度器中的request全部进行完毕,则程序停止,中间下载的url出现问题则放置最后重新进行一次。

二、制作爬虫的4个步骤

新建项目:scrapy startproject xxx

明确目标(item.py):明确想要爬取的目标

制作爬虫(spider.py):制作爬虫开始爬取网页

存储内容(pipeline.py):设计管道存储爬取内容

三:进入伯乐网站分析

进入伯乐在线网站找到文章,所有文章可以发现伯乐在线的文章全部在此,每个页一共20个文章,下面一共有多少页

进行此网站的好处就是文章有集合在一起,可以从同一路径下进入分析,避免了使用广度搜索和深度搜索的算法使用。

进入一篇文章中,分析文章的结构

文章标题和信息(上行标蓝的为标题,下行标蓝的为信息包括日期、文章类型等)

文章主题内容

文章底部评论数等

这三个部分就是要提取的内容,可以通过浏览器的f12进行观察页面构成,进行字段的提取。

四、项目进行前的预备工作

1、在cmd某目录下文件下面使用scrapy startproject ArticleSpider项目(工程),创建成功会显示你能开始使用你的第一个爬虫了

2、可以在文件下里面显示出建立的ArticeSpider文件,里面包括spider文件夹等

3、在spider下面建立一个名为jobbole的实例类,在cmd中进入到工程的spider文件下,使用scrapy genspider jobbole http://blog.jobbole.com/,这样就形成了一个jobbole实例类,这是一个命令scrapy genspider py文件名 二级域名。可以去文件下看下也可以通过pycharm的IDE看下。会出现一个jobbole的模板,模板可以自己进行定制,目前使用scrapy自带的基础模板。

4、在ArticleSpider一级文件下编写main文件,此文件主要用于调式和运行项目

5、在setting文件中修改爬虫协议,将图中的蓝字改成false。因为爬虫会遵循一个爬虫协议,有些网站不允许爬虫,scrapy进行会检查爬虫协议,如果不允许则不进行,将其修改false就是忽略掉爬虫协议。

五、字段解析涉及标题、文章信息、主题内容等进行提取

使用xpath或者css选择器定位某个元素,进行提取。

这样就实现了字段的提取,但是我们可以通过scrapy shell 文章url(http://blog.jobbole.com/114417/),最终生成》》》这样一个形式

,因为我安装了ipython的缘故会有另外一个形式,但是测试一样。建议安装ipython(cmd中pip install ipyhon)就好。

六:具体字段提取

在第五中只是简单说明字段的说明,在jobble文件建立一个提取文章字段的函数

在此函数中进行具体字段的解析,因为后面有更好的代码item loader写成此代码格式,所以此图中进行了整体代码的注释,我这边主要是提取标题、文章时间、评论数、点赞数等,里面的css如何写成根据css语法进行或者使用xpath也可以成形(在审查元素中可以copy xpah,这种方式比较简单代码量大些)。

 

七、既然所有的信息已经制定好提取,所以将列表中的url进行获取后并且解析每个文章相关信息进行下载,同时获取下一页的url循环解析下载,第一个图可以获取到全部的url。

 

八、图片提取

伯乐在线早期文章的图片与文章中的一个图片是相同的,有一个专门的url可以将其进行转至到位置,现在很多网站将其图片放置第三方的服务器中。但是现在不影响,只需要关注文章列表页面所存在的图片即可。

通过审查元素可以找到图片一般存在于img src中元素里面,我们通过提取这些相关元素就能将图片找到。

九、提取每页的图片加上下一页的图片所以将parse函数进行修改,这样就能使用scrapy将其进行抓取了。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值