009:博客类爬虫项目实战

爬虫项目开发的第一步,首先需要对我们想要实现的爬虫项目的功能进行定位和分析,即进行需求分析工作。

项目分析:

在今天的项目中,我们建立的爬虫需要实现的功能有:
1、爬取博客中任意一个用户的所有博文信息。
2、将博文的文章名、文章URL、文章点击数、文章评论数等信息提取出来。
3、将提取出来的数据写入Mysql数据库中。

可以发现,该爬虫项目额主要目的是将博客中用户所有博文的相关信息提取出来并储存到数据库中。

该项目的难点有:
1、如何提取文章点击数,文章评论数等信息。
2、如何通过循环爬取某个用户的所有博文信息。
3、pipelines.py 中对信息的进一步处理。
4、Xpath 表达式与正则表达式的配合使用。
5、在Scrapy中模拟浏览器进行爬取。

实现思路:

该项目中,主要的实现有:

  • 1、使用Urllib模块手动编写响应爬虫实现。
  • 2、使用Scrapy框架编写响应爬虫项目实现。

但是考虑到Scrapy框架实现起来相对来说更方便,我们这里是使用Scrapy方法来编写。
使用框架的思路有两种:

  • 1、使用基于basic爬虫模板的爬虫实现
  • 2、使用基于crawl爬虫模板的自动爬虫实现。

在本项目中,我们将使用基于basic爬虫模板的爬虫实现,如果大家想尝试基于crawl爬虫模板的自动爬虫实现,可以关注专栏,后面的文章会写到。

实战编写:

接下来为大家逐步分析并实现本爬虫项目的编写。
首先,我们需要设计好本项目中需要用到的Mysql数据库,用来储存文章名,文章Url,文章点击数评论数等信息。
本项目中的Mysql数据库表结构如下图所示,其中数据库名字为hexun。表名为myhexum。

在这里插入图片描述
设计好数据库后,我们可以通过SQL语句建立设计好的数据库。
首先我们应该创建数据库hexun,

create database hexun

创建数据库之后,需要选择该数据库并在该数据库下创建对应的表格,SQL语句如下所示:

use hexum

在这里插入图片描述

create table myhexun(id int(10) auto_increment primary key not null,name varchar(30), url varchar(100),hits int(15),comment int(15));

在这里插入图片描述

创建表格后,我们可以通过show tables 来查看我们刚刚创建的表格是否成功。
在这里插入图片描述
在这里插入图片描述
可以看到,此时数据库hexun下的表已经有了他自己字段。
我们需要基于Scrapy框架编写我们的爬虫项目。
首先,可以在cmd命令行中创建对应的爬虫项目hexunpjt。如下图所示:

在这里插入图片描述
在这里插入图片描述
创建好爬虫项目之后,我们可以通过编辑器先编写爬虫项目中的items.py文件。将文件修改为如下所示:
在这里插入图片描述
编写好items.py文件之后,还需要编写pipelines.py 文件对爬取到的信息进一步处理,我们将pipelines.py文件修改为如下所示,关键部分已注释。
在这里插入图片描述
在这里插入图片描述
接下来我们还需要编写settings.py文件进行响应的配置。
首先我们需要开启ITEM_PIPELINES,将设置文件中的ITEM_PIPELINES修改为如下:
在这里插入图片描述
开始了ITEM_PIPELINES之后,为了避免爬虫被对方服务器通过我们的Cookie信息识别从而将我们的爬虫禁止,我们可以关闭使用Cookie,将设置文件中的COOKIES_ENABLED信息修改为如下所示:
在这里插入图片描述
随后,为了避免对方服务器的robots.txt文件对我们的爬虫进行限制,可以在文件中设置不遵循robots协议进行爬取。我们将设置文件中的ROBOTSTXT_OBEY部分设置为如下所示:
在这里插入图片描述
设置好配置文件之后,我们可以在本项目中创建一个爬虫。在cmd命令行中使用下面指令进行创建:(cd到项目中)
在这里插入图片描述
在此我们基于basic模板闯进一个名为myhexunspd的爬虫。接下来,我们需要编写该爬虫实现网页的爬取:
首先我们分析一下如何编写该爬虫:
我们打开某博客中任意一个用户的博文列表页。比如我们打开网址是: http://fjrs168.blog.hexun.com/
打开后:
在这里插入图片描述
出现上图界面。
我们需要对这个页面中要提取的信息进行分析。
在这里插入图片描述
在这里插入图片描述
所以我们的Xpath表达式可以为:

"//span[@class='ArticleTitleText']/a/text()"

文章URL的Xpath表达式为:

"//span[@class='ArticleTitleText']/a/@href"

可以看到,源代码中没有包含文章的点击数和阅读数等信息。
因为这些信息是通过javascrapt脚本动态获取的。此时我们可以使用Fiddler工具进行分析。
在这里插入图片描述
通过分析我们会发现,所示click108659235对应的值就是我们所查看的博文列表当前阅读数。click108641909对应的是第二篇。comment108641909对应的是评论数。
在这里插入图片描述
我们可以在该网页中通过正则表达式将对应的博文阅读数评论数提取出来。
阅读数: "click\d*?’,’(\d*?)’ "
评论数: "comment\d*?’,’(\d*?)’ "

通过fiddler分析出来他对应的网址:
通过正则表达式将储存评论数和阅读数的网址信息提取出来:

'<script type="text/jacascript"  src="(http://click.tool.hexun.com/.*?)">'

接下来我们要:
1、获取对应的点击数和评论数的网址
2、通过urllib.request爬取对应储存博文的点击数和评论数的网址中的数据
3、使用正则表达式将博文的点击数和评论数提取出来

我们先实现获取任意一个用户的所以博文:
将爬虫文件myhexunspd.py修改为如下所示:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
比如我们要修改其他用户的信息,只需要更改爬虫文件中的uid即可。
比如,我们首先找一个博客网址如下:
http://shihanbingblog.blog.hexun.com/

将uid = “19940007”
修改为uid = “shihanbingblog”
即可以实现爬取另一个用户的博文信息。

调试与运行:

编写好对应的爬虫项目之后,我们可以运行该爬虫项目下的爬虫文件myhexunspd.py。如下所示:

scrapy crawl myhexunspd --nolog

基本上完了。有点仓促。
过几天再做修改。

  • 8
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
以下是一些可以学习 Python 爬虫实战项目的在线资源: 1. 爬虫实战:这是一个非常好的 Python 爬虫实战教程,包括爬取网站、分析网站、数据处理等内容。 2. 爬取豆瓣电影 Top250 的数据:可以使用 requests 和 BeautifulSoup 库爬取豆瓣电影 Top250 的电影名称、评分、导演、主演等信息,并将数据保存到本地或数据库中。具体的实现方法可以参考这个:https://www.jianshu.com/p/1f2a6db1f36b。 3. 爬取猫眼电影 TOP100 的数据:猫眼电影 TOP100 是国内比较受欢迎的电影排行榜,可以使用 requests 和 BeautifulSoup 库爬取猫眼电影 TOP100 的电影名称、评分、导演、主演等信息,并将数据保存到本地或数据库中。具体的实现方法可以参考这个:https://blog.csdn.net/qq_37674896/article/details/102632331。 4. 爬取百度百科词条信息:可以使用 requests 和 BeautifulSoup 库爬取百度百科词条的信息,如词条名称、简介、相关人物、历史事件等,并将数据保存到本地或数据库中。具体的实现方法可以参考这个:https://www.jianshu.com/p/7ab6a2c69d8c。 5. 爬取新浪新闻的数据:可以使用 requests 和 BeautifulSoup 库爬取新浪新闻的标题、摘要、发布时间、来源等信息,并将数据保存到本地或数据库中。具体的实现方法可以参考这个:https://blog.csdn.net/qq_40619469/article/details/104245035。 以上这些实战项目不仅可以帮助您提高 Python 爬虫的技能,而且可以锻炼您的数据处理和存储能力。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

考古学家lx(李玺)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值