写博客就和笔记同样真的颇有用,你能够随时的翻阅。爬虫的爬虫原理与数据抓取、非结构化与结构化数据提取、动态HTML处理和简单的图像识别已经学完,就差整理博客了html
开始学习scrapy了,因此从新建了个分类。python
scrapy的下载到安装,再到可以成功运行就耗费了我三个小时的时间,为了防止之后忘记,记录一下。windows
我用的是Python3.6. Windows 须要四步网络
一、pip3 install wheel架构
二、安装Twisted并发
a. http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted, 下载:Twisted-17.9.0-cp36-cp36m-win_amd64.whl
框架
b. 进入文件所在目录
dom
c. pip3 install Twisted-17.1.0-cp35-cp35m-win_amd64.whl异步
三、pip3 install scrapyscrapy
而后我打开cmd,输入了scrapy, 出现:
scrapy startproject myspider -----------建立scrapy项目
cd myspider -----------进入myspider目录
scrapy genspider baidu baidu.com ------------建立爬虫文件
scrapy crawl baidu -------------运行文件
以后,就报错了,说缺乏一个模块win32, 上网查说 windows上scrapy依赖pywin32,下载网址: https://sourceforge.net/projects/pywin32/files/
我下载了,在安装的时候出现了:
上面说是没注册什么的,上网搜了一下解决方案,唉,本身没看懂。痛心疾首,对我本身的智商感到捉急
四、在cmd中使用python -m pip install pypiwin32
这是我成功的方法,上网查以后,在https://stackoverflow.com/questions/4863056/how-to-install-pywin32-module-in-windows-7有这样一段话:
天天一个小实例:爬视频(其实找到了视频的url连接,用urllib.request.urlretrieve(视频url,存储的路径)就能够了。
我作的这个例子太简单;用scrapy框架显得复杂,,我只是下载了一页,多页的话循环url,主要是走一遍使用Scrapy的流程:
1 #第一 2 打开mySpider目录下的items.py 3 4 # -*- coding: utf-8 -*- 5 6 # Define here the models for your scraped items 7 # 8 # See documentation in: 9 # https://doc.scrapy.org/en/latest/topics/items.html 10 11 import scrapy 12 13 '''Item 定义结构化数据字段,用来保存爬取到的数据,有点像Python中的dict,可是提供了一些额外的保护减小错误。 14 15 能够经过建立一个 scrapy.Item 类, 而且定义类型为 scrapy.Field的类属性来定义一个Item(能够理解成相似于ORM的映射关系)。''' 16 class MyspiderItem(scrapy.Item): 17 # define the fields for your item here like: 18 name = scrapy.Field() 19 mp4_url = scrapy.Field() 20 21 22 23 #第二,打开你建立的爬虫文件,个人是baisi.py 24 25 # -*- coding: utf-8 -*- 26 import scrapy 27 from myspider.items import MyspiderItem 28 29 class BaisiSpider(scrapy.Spider): 30 name = 'baisi' 31 allowed_domains = ['http://www.budejie.com'] 32 start_urls = ['http://www.budejie.com/video/'] 33 34 def parse(self, response): 35 # 将咱们获得的数据封装到一个 `MyspiderItem` 对象 36 item = MyspiderItem() 37 38 #提取数据 39 mp4_links = response.xpath('//li[@class="j-r-list-tool-l-down f-tar j-down-video j-down-hide ipad-hide"]') 40 for mp4_link in mp4_links: 41 name = mp4_link.xpath('./@data-text')[0].extract() 42 video = mp4_link.xpath('./a/@href')[0].extract() 43 #判断是否有MP4——url连接,有的保存 44 if video: 45 item['name'] = name 46 item['mp4_url'] = video 47 # 将获取的数据交给pipelines 48 yield item 49 50 51 52 53 54 #第三 打开pipelines.py文件 55 56 # -*- coding: utf-8 -*- 57 58 # Define your item pipelines here 59 # 60 # Don't forget to add your pipeline to the ITEM_PIPELINES setting 61 # See: https://doc.scrapy.org/en/latest/topics/item-pipeline.html 62 import urllib.request 63 import os 64 class MyspiderPipeline(object): 65 def process_item(self, item, spider): 66 #文件名 67 file_name = "%s.mp4" % item['name'] 68 #文件保存路径 69 file_path = os.path.join("F:\\myspider\\myspider\\video", file_name) 70 urllib.request.urlretrieve(item['mp4_url'],file_path) 71 return item 72 73 74 第四,执行scrapy crawl baisi
执行结果:
['twɪstɪd]
(其主要对手是Tornado)异步网络框架来处理网络通信,能够加快咱们的下载速度,不用本身去实现异步框架,而且包含了各类中间件接口,能够灵活的完成各类需求。Scrapy框架官方网址:http://doc.scrapy.org/en/latest
Scrapy中文维护站点:http://scrapy-chs.readthedocs.io/zh_CN/latest/index.html
Scrapy Engine(引擎)
: 负责Spider
、ItemPipeline
、Downloader
、Scheduler
中间的通信,信号、数据传递等。
Scheduler(调度器)
: 它负责接受引擎
发送过来的Request请求,并按照必定的方式进行整理排列,入队,当引擎
须要时,交还给引擎
。
Downloader(下载器)
:负责下载Scrapy Engine(引擎)
发送的全部Requests请求,并将其获取到的Responses交还给Scrapy Engine(引擎)
,由引擎
交给Spider
来处理,
Spider(爬虫)
:它负责处理全部Responses,从中分析提取数据,获取Item字段须要的数据,并将须要跟进的URL提交给引擎
,再次进入Scheduler(调度器)
,
Item Pipeline(管道)
:它负责处理Spider
中获取到的Item,并进行进行后期处理(详细分析、过滤、存储等)的地方.
Downloader Middlewares(下载中间件)
:你能够看成是一个能够自定义扩展下载功能的组件。
Spider Middlewares(Spider中间件)
:你能够理解为是一个能够自定扩展和操做引擎
和Spider
中间通讯
的功能组件(好比进入Spider
的Responses;和从Spider
出去的Requests)
基本使用:
1.在命令行中输入: scrapy startproject myspider -----------建立scrapy项目
自动建立目录:
打开:myspider
文件说明:
2.
cd myspider -----------进入myspider目录
scrapy genspider baidu baidu.com ------------建立爬虫文件
注意:通常建立爬虫文件时,以网站域名命名,文件会在spiders中,
3. 而后你就能够编写代码了
4. scrapy crawl baidu -------------运行文件
制做 Scrapy 爬虫 一共须要4步: