爬虫项目开发的第一步,首先需要对我们想要实现的爬虫项目的功能进行定位和分析,即进行需求分析工作。
项目分析:
在今天的项目中,我们建立的爬虫需要实现的功能有: 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。如下图所示:
"//span[@class='ArticleTitleText']/a/text()"
URL的Xpath表达式为:
"//span[@class='ArticleTitleText']/a/@href"
可以看到,源代码中没有包含的点击数和阅读数等信息。 因为这些信息是通过javascrapt脚本动态获取的。此时我们可以使用Fiddler工具进行分析。 通过分析我们会发现,所示click108659235对应的值就是我们所查看的博文列表当前阅读数。click108641909对应的是第二篇。comment108641909对应的是评论数。 我们可以在该网页中通过正则表达式将对应的博文阅读数评论数提取出来。 阅读数: "click\d’,’(\d)’ " 评论数: "comment\d’,’(\d)’ "
通过fiddler分析出来他对应的网址: 通过正则表达式将储存评论数和阅读数的网址信息提取出来:
'