一、框架简介:
1、Scrapy是纯python开发的一个高效,结构化的网页抓取框架;
2、Scrapy是用纯python实现一个为了爬取网站数据、提取结构性数据而编写的应用框架,用途非常广泛。多用于抓取大量静态页面
3、框架的力量,用户只需要制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片,非常之方便。
4、Scrapy使用了Twisted['twɪstɪd](其主要对手是Tornado)异步网络框架来处理网络通讯,可以加快我们的下载速度,不用自己去实现异步框架,并且包含了各种中间件接口,可以灵活的完成各种需求。
二、运行流程:
Scrapy架构解析:
Scrapy Engine(引擎): 负责Spider、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等。
Scheduler(调度器): 它负责接受引擎发送过来的Request请求, 并按照一定的方式进行整理排列, 入队, 当引擎需要时,交还给引擎。
Download(下载器): 负责下载Scrapy Engine(引擎)发送的所有Requests请求,并将其获取到的Responses交还给Scrapy Engine(引擎),由引擎交给Spider来处理。
**Spider(爬虫):**它负责处理所有Responses,从中分析提取数据,获取Item字段需要的数据,并将需要跟进的URL提交给引擎,再次进入Scheduler(调度器)。
Item Plpeline(管道): 它负责处理Spider中获取到的Item,并进行后期处理(详细分析、过滤、存储等)的地方。
Downloader Middlewares: (下载中间件):你可以当做是一个可以自定义扩展下载功能的组件。
Spider Middlewares(Spider中间件): 你可以理解为是一个可以自定义扩展和操作引擎和Spider中间通信的功能组件(比如进入Spider的Responses 和 从Spider出去的Requests)。
三、模块安装:
scrapy支持python2.7和python3.4以上版本。
python包可以用全局安装(也称为系统范围),也可以安装在用户空间中。不建议安装在系统范围。相反,建议在“虚拟环境”(virtualenv)中安装scrapy。Virtualenv允许不与已安装的Python系统包冲突,并且任然通常使用pip安装。
Ubuntu 14.0.4或以上安装:
scrapy目前正在使用最新版的lxml,twisted和pyOpenSSL进行测试,并且与最近的Ubuntu发行版兼容。但它也支持旧版本的Ubuntu,比如Ubuntu14.04,尽管可能存在TLS连接问题。
Ubuntu安装注意事项
不要使用python-scrapyUbuntu提供的软件包,它们通常太旧而且速度慢,无法赶上最新的Scrapy。
要在Ubuntu(或基于Ubuntu)系统上安装scrapy,您需要安装这些依赖项:
sudo apt-get install python-dev python-pip libxml2-dev libxslt1-dev zlib1g-dev libffi-dev libssl-dev
如果你想在python3上安装scrapy,你还需要python3的开发文件:
sudo apt-get install python3-dev
在virtualenv中,你可以使用pip安装Scrapy:
pip install scrapy
四、简单实用:
第零步:分析网站
- 你的目标是什么?
- 你的目标是动态数据or静态数据?
- 怎么获取第一批数据?
- 怎么获取多批数据?
- 怎么做持久化?
分析要抓取的数据:
进入豆瓣电影首页–>> 排行版–>>剧情:
分析要抓取的内容:
打开开发者模式,进行数据分析:
分析后发现图片的url在源代码中找不到,可能是ajax动态数据。
进入开发者模式下的Network–>>XHR,然后按Ctrl+R刷新网页,会出现以下像列表的数据:
里面有20条动态数据,如下:
展开分析,数据如下:
我们也可以在Headers复制请求头的链接,在新窗口粘贴,就能看到我们要的JSON数据(*注意:要先看到如下的数据,浏览器得安装扩展工具JSONView【JSONView插件能更好的展示我们访问到的json数据】):
第一步:新建项目
创建项目:scrapy startproject project_name
进入项目目录后创建爬虫:
scrapy genspider spider_name website_domain
执行爬虫:
scrapy crawl spider_name 或者 scrapy runspider spider_file
----------------------------------------------------------------------------------------------------------------
scrapy.cfg: 项目部署的配置文件
tz_spider: 项目目录,包含了项目运行相关的文件
itsms.py : 项目的目标文件
middlewares.py : 项目的中间件文件
pipelines.py : 项目的管道文件
settings.py : 项目的设置文件
spiders : 项目的爬虫目录
第二步:设置项目目标
进入items.py文件中设置爬取的目标
第三步:设置管道文件
编辑pipelines.py文件,让目标数据流向指定点. 如:数据保存到文件中
【*注意:管道文件设置好后,需要在settings.py文件注册】
记住得在settings.py中注册,(要不然运行会报错):
第四步:修改设置文件(即Settings.py)
设置UA信息
设置不遵循robots检测
设置爬虫时间间隔
设置管道文件注册
User_Agent 后面的信息改成浏览器中的信息:
第五步:编写spider
第六步:运行和运行结果
1、方法一:(在虚拟机中的命令)
scrapy crawl douban.py (.py可加也可不加)
2、在pycharm运行:
得在douban.py同目录下创建一个运行脚本runStart.py(命名名字随意)
然后运行runStart.py文件。
运行后的数据:
你的支持就是我的动力,记得帮我点个赞哦。。。