写爬虫小程序的动机是当我上网浏览到 http://mp.weixin.qq.com/s?__biz=MjM5MTM3MzIzMg==&mid=209513316&idx=1&sn=e5dbd9a2ccccb88d0ee5c4d5790699c1#rd 里面的SDN内容时希望保存所有图片在本地,手动保存很机械化,于是用爬虫来完成。
我使用的是scrapy
一、环境搭建
1、python3安装 https://www.python.org/downloads/windows/ 找到安装包下载安装,在DOS命令行界面输入python成功即可。
2、在命令行界面输入
python -m pip install --upgrade pip 升级pip安装工具
直接 pip install wheel(网络安装)
手动下载好.whl文件(手动安装)
进入到目录下
C:\WINDOWS\system32>f:
F:\>cd环境搭建
pip install lxml-3.6.4-cp35-cp35m-win_amd64.whl
剩余依次安装
二、创建爬虫项目文件
scrapy startproject fst1
创建一个爬虫项目,当前目录下会新建爬虫项目文件
cd fst1
打开文件夹
scrapy genspider -t basic name(自定爬虫文件名) domain.name(爬取网页的域名)
该方法可以使用提前定义好的模板来生成spider
使用任意IDE打开该项目,我使用的是pycharm。
三、代码编写
定义items.py
先定义items,这里相当于定义一个个容器用于装爬取到的内容
classFst1Item(scrapy.Item):
# define the fields for your item here like:
# name = scrapy.Field()
sdnpicture = scrapy.Field()
这里的sdnpicture就是用来装抓取到的sdn图片
设置settings.py
相应的反爬机制(不遵循robots协议、模拟成浏览器user-agent、不记录cookie)
设置中ctrl+f可以快捷查找你要修改的内容
不遵循robots协议 不记录cookie user-agent 浏览器代理可以打开一个浏览器找到 启用piplines.py,注意这里的名字要修改和pipelines.py中一样编写爬虫文件
就是spiders文件夹下的刚才你命名的文件
这里的item["sdnpicture"]就是把抓取到的图片装到刚才定义的容器中
后面的内容是XPATH表达式,这里简单讲解下:
/从最开始提取标签,按照目录的层次
text()提取标签中文本内容
/html/head/title/text()
//寻找所有的标签
//link所有的link标签
@提取属性
@rel
//div[@class='abc']
标签[@属性=属性值]
也可以查看详解,访问 http://www.w3school.com.cn/xpath/xpath_syntax.asp
编写爬虫后续操作文件pipelines.py
四、执行爬虫
C:\Python开发\crawl\fst1>scrapy crawl sdn --nolog
爬取到的图片完成
网友评论