当你学久了爬虫之后,你会发现有好大大大大大大大大大一部分是相同的代码,仅仅是解析网页和保存网页不一样,其他部分基本就是这样那样的,那能不能有一个工具自动给我们完成这个工作呢?没错,Scrapy框架就能帮你实现
/1.scrapy的安装/
如果你没看过这篇文章,你可能会用pip去安装,但是根据我的经验,你如果用他安装的话,你会感觉:
为毛奈?它的依赖库有数十个,有的要用源码安装,有的依赖库还有依赖库,有的依赖库的依赖库还还还有依赖库:
如果你不嫌他烦的话,可以参考这篇: https://www.cnblogs.com/tatamizzz/p/5588047.html
如果你嫌他烦的话,那么请继续往下看:
最简单的方法只需要2步:
安装miniconda,https://docs.conda.io/en/latest/miniconda.html安装即可,记得添加环境变量。
进入cmd,使用conda install scrapy指令自动安装依赖包和主要包,怎么样,是不是贼棒呢?
顺便提一句,anaconda也自带conda,所以用anaconda安装python的盆友们,就不用做第一步咯!
在cmd中输入scrapy,如果出现类似下面的回应,就表明你安装成功了:
/2.scrapy基本指令/
我们用scrapy来爬虫,就需要建立一个项目,在scrapy中,有许多帮我们快捷写爬虫的指令,就像下面这个:
cd desktopscrapy startproject hupu
在命令行里分别输入这两条指令,你会发现桌面多了一个文件夹:
这就是项目主文件夹了,它的结构是这样的:
>>> for x in os.walk(r'C:\Users\Administrator.PC-20181016YSMN\Desktop\hupu'): print(x) ('C:\\Users\\Administrator.PC-20181016YSMN\\Desktop\\hupu', ['hupu'], ['scrapy.cfg'])('C:\\Users\\Administrator.PC-20181016YSMN\\Desktop\\hupu\\hupu', ['spiders', '__pycache__'], ['items.py', 'middlewares.py', 'pipelines.py', 'settings.py', '__init__.py'])('C:\\Users\\Administrator.PC-20181016YSMN\\Desktop\\hupu\\hupu\\spiders', ['__pycache__'], ['hupu.html', 'hupucrawl.py', '__init__.py'])('C:\\Users\\Administrator.PC-20181016YSMN\\Desktop\\hupu\\hupu\\spiders\\__pycache__', [], ['hupucrawl.cpython-37.pyc', '__init__.cpython-37.pyc'])('C:\\Users\\Administrator.PC-20181016YSMN\\Desktop\\hupu\\hupu\\__pycache__', [], ['settings.cpython-37.pyc', '__init__.cpython-37.pyc'])>>>
但是,这里面还没有主文件。
我们可以选择用指令创建主文件或手动创建主文件。
手动创建需要到hupu\hupu\spiders目录下创建hupucrawl.py文件,内容如下:
# -*- coding: utf-8 -*-import scrapyclass HupucrawlSpider(scrapy.Spider): name = 'hupucrawl' allowed_domains = ['bbs.hupu.com'] start_urls = ['https://bbs.hupu.com/'] def parse(self, response): pass
自动创建需要分别执行如下指令:
cd hupu/hupu/spidersscrapy genspider hupucrawl bbs.hupu.com
便自动生成了如下文件:
# -*- coding: utf-8 -*-import scrapyclass HupucrawlSpider(scrapy.Spider): name = 'hupucrawl' allowed_domains = ['bbs.hupu.com'] start_urls = ['http://bbs.hupu.com/'] def parse(self, response): pass
今天你学废了吗?