使用Scrapy爬虫框架简单爬取图片并保存本地(妹子图)

时间:2024-04-02 20:35:12

初学Scrapy,实现爬取网络图片并保存本地功能

一、先看最终效果

保存在F:\pics文件夹下
使用Scrapy爬虫框架简单爬取图片并保存本地(妹子图)

二、安装scrapy

1、python的安装就不说了,我用的python2.7,执行命令pip install scrapy,或者使用easy_install 命令都可以

2、可能会报如下错误

***********************************************************  Could not find function xmlCheckVersion in library libxml2. Is libxml2 installed?  ***********************************************************
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

使用Scrapy爬虫框架简单爬取图片并保存本地(妹子图)
解决方法:安装libxml2
下载对应的Python的版本,安装即可,网址:
https://pypi.python.org/pypi/lxml/3.4.4

三、创建项目

1、执行命令

scrapy startproject xiaohuar
  • 1
  • 1

会自动创建xiaohuar的scrapy项目

2、项目结构(我用的是WingIDE)

使用Scrapy爬虫框架简单爬取图片并保存本地(妹子图)

文件说明:
• scrapy.cfg 项目的配置信息,主要为Scrapy命令行工具提供一个基础的配置信息。(真正爬虫相关的配置信息在settings.py文件中)
• items.py 设置数据存储模板,用于结构化数据,如:Django的Model
• pipelines 数据处理行为,如:一般结构化的数据持久化
• settings.py 配置文件,如:递归的层数、并发数,延迟下载等
• spiders 爬虫目录,如:创建文件,编写爬虫规则

四、编写爬虫程序

1、在spiders文件夹下创建.py文件

代码中注释已经很详细了,就不解释了,关于解析html内容,使用的是xpath,之前使用Javawebmagic 爬虫框架也是使用的此种方式,所示还是比较熟悉,一些插叙语法参考步骤2

2、xpath查询语法

查询标签中带有某个class属性的标签://div[@class=’c1’]即子子孙孙中标签是div且class=‘c1’的标签
• 查询标签中带有某个class=‘c1’并且自定义属性name=‘alex’的标签://div[@class=’c1’][@name=’alex’]
• 查询某个标签的文本内容://div/span/text() 即查询子子孙孙中div下面的span标签中的文本内容
• 查询某个属性的值(例如查询a标签的href属性)://a/@href

3、运行

进入到xiaohuar目录,执行
scrapy crawl xiaohuar
可能会报以下错误,原因是少win32api的模块
使用Scrapy爬虫框架简单爬取图片并保存本地(妹子图)
解决方法:
选择对应的版本下载安装即可地址:
http://sourceforge.net/projects/pywin32/files/

4、关于scrapy shell终端

可以使用scrapy shell进行调试,例如执行
scrapy shell http://www.xiaohuar.com/list-1-1.html
就可以查看得到的数据
使用Scrapy爬虫框架简单爬取图片并保存本地(妹子图)

5、最后的说明

程序执行过程中可以设置爬取的深度,我这里没有设置,可能关掉cmd程序还在执行,可以结束python的进程,或者设置爬取深度

五、总结

最近学习在python,实现非常简单的一个爬虫当做练习,中间一些模块的缺少错误,在网上查询还是费了很多的时间,有的回答是没有解决的,总之自己实践之后才会更加深刻。