作者学习了scrapy爬虫框架,想把获取的爬虫信息保存至本地mysql数据库中,查找了下不少作者的资料,这里整理了本人的学习经过,记录+分享在这里,望读者交流学习和批评建议。
结构简介:
1.spiders-是主爬虫文件夹,其中mvSpi.py是网页信息获取的主代码文件
2.items.py-定义了将要存储在mysql中结构化数据字段
3.pipelines.py-管道文件,定义数据库连接与操作信息等
4.setting.py-设置文件,定义请求头、mysql配置等信息
5.run.py-运行文件,以便不进入命令行,也能运行项目
以上未介绍的文件,为项目创建初始内容,本项目没有进行相应修改。
(1)项目创建
以下操作默认配置好了python环境
-首先,在cmd命令行cd到要放scrapy项目的文件夹路径下
-然后,运行scrapy startproject mvSrc 命令,会出现上面的目录结构了
-最后,cd到mvSrc目录下,运行scrapy genspider mvSpi movie.douban.cn 会在spiders下创建爬虫文件
(2) mvSpi.py的编辑
这里是网页信息获取的主代码文件,当然在编辑具体的网页信息获取程序前,需要对目标网址进行网页分析。目标网页内容如下:
这里我们想要获取的电影信息有|电影名称|导演|评分|剧情分类|电影网址|
在解析网页内容时,可以使用shell交互式平台进行取数测试,具体步骤就是cd到项目目录下,运行如下代码:
>>>scrapy shell https://movie.douban.com/top250
In[1]:response.xpath('./div[@class="hd"]/a/span[1]/text()').extract()
定义将要存储在mysql中结构化数据字段
当然,也要在你本地mysql中创建相应的库表
CREATE TABLE `mvtable` if not exists (
`mv_name` varchar(100) DEFAULT NULL COMMENT '电影名称',
`mv_update` varchar(200) DEFAULT NULL COMMENT '更新时间',
`mv_actor` varchar(200) NOT NULL COMMENT '导演',
`mv_score` varchar(50) DEFAULT NULL COMMENT '评分',
`mv_class` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8_general_ci DEFAULT NULL COMMENT '剧情分类',
`mv_mvUrl` varchar(200) NOT NULL COMMENT '网址链接',
PRIMARY KEY (`mv_mvUrl`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;
(4) pipelines.py的编辑
定义数据库连接与操作信息
(5) setting.py的编辑
定义请求头、mysql配置等信息
(6) run.py运行程序的编辑
run.py文件运行后,打开mysql中的mvtable如下所示:
略
结构简介:
1.spiders-是主爬虫文件夹,其中mvSpi.py是网页信息获取的主代码文件
2.items.py-定义了将要存储在mysql中结构化数据字段
3.pipelines.py-管道文件,定义数据库连接与操作信息等
4.setting.py-设置文件,定义请求头、mysql配置等信息
5.run.py-运行文件,以便不进入命令行,也能运行项目
以上未介绍的文件,为项目创建初始内容,本项目没有进行相应修改。
首先,spiders文件夹下mvSpi.py时主爬虫代码,这里继承了scrapy.spider类方法,引用了items的函数MvscrItem,产生了parse函数下的结果集item;
然后,pipelines.py 管道文件,接收scrapy.spider类方法与结果集item,将数据进行相应的保存;
最后,setting.py 配置文件,为以上操作进行权限的关联。