Python作为脚本语言,功能非常强大,这里介绍一下爬虫框架Scrapy有安装及使用方法介绍。
一、安装篇
python3在安装scrapy时,需要twisted的支持,但安装twisted会需要visual studio的支持,详见本人的另一文章Python 3.5 安装scrapy无法找到vcvarsall.bat解决方案.
pip3 install twisted
pip install scrapy
二、使用介绍
开始项目scrapy startproject project
此时会生成一个目录结构如下:
2. shell工具介绍
scrapy自带shell工具,是进行测试的好地方,我们以起点小说网为例,网址为:https://www.qidian.com/
scrapy shell运行后,我们可借助一些函数进行数据定位、解析、子链接的提取:
view(response) 查看网页
fetch(url|) 抓新的网页
response.css('a[href') #scrapy内置css选择器,具体请百度其它文章
extractor_first() #解析文本
extractor() #解析列表
from scrapy.linkextractors import LinkExtractorle=LinkExtractor(restrict_css('a[href]')links=le.extract_links(le)#以上这段代码用来提取链接
3. 爬虫实现
3.1 先建一个要爬取内容的类ProjectItem, 存入items.py
3.2 我们在spider文件夹下建一个novelspider.py,写入相关代码
此时我们就要用到scrapy shell 帮忙测试了,比如我们要抓取《重生之财源滚滚》这本小说的小说名,可以在shell下用如下代码得到:
scrapy shell https://www.qidian.com/finish
novels=response.css('.book-mid-info')
novels[i].css('h4 a[href]::text').extract_first()'重生之财源滚滚'
通过上面的代码,我们把小说名给抓出来了.同理可以抓其它字段,具体代码如下:
4. 运行爬虫
回到project目录,运行scrapy crawl novel_qidian -o box.csv命令其中novel_qidian就是在novelSpider类中的name项, -o box.csv 即以csv文件形式存储内容以下是爬取到的内容:
scrapy作为一个异步爬虫框架,非常容易写出高质量的爬虫,同时scrapy还有很多功能中间件,对于设置访问头,图片及文件下载都有相应的方法,有兴趣的可以深入研究!