Scrapy的安装:
当前环境win10,python_3.6.4,64bit。在命令提示符窗口运行pip install Scrapy,出现以下结果:
building ‘twisted.test.raiser‘ extension error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": http://landinghub.visualstudio.com/visual-cpp-build-tools
按报错提示安装之后错误依旧存在;
http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted> 下载Twisted对应版本的whl文件,cp后面是python版本,amd64代表64位,重新运行pip install命令:
pip install C:\Users\E5-573G\Desktop\2018寒假\Python\爬虫\scrapy\Twisted-17.5.0-cp36-cp36m-win_amd64.whl1
其中install后面为下载的whl文件的完整路径名 。
然后再次运行 pip install scrapy 命令即可安装成功。
Scrapy命令行格式:
Scrapy常用命令:
应用Scrapy爬虫框架主要是编写配置型代码。
Scrapy的第一个实例:演示HTML地址。
演示HTML页面地址:http://python123.io/ws/demo.html
文件名称:demo.html
产生步骤:
步骤1:建立一个Scrapy爬虫工程;
选取一个目录(C:\Users\E5-573G\Desktop\2018寒假\Python\爬虫\scrapy),然后执行如下命令:
生成的工程目录:
python123demo/ ——————— 外层目录
? scrapy.cfg ——————— 部署Scrapy爬虫的配置文件
? python123demo/ ——————— Scrapy框架的用户自定义python代码
? init.py ——————— 初始化脚本
? items.py ——————— Items代码模板(继承类)
? middlewares.py ————— Middlewares代码模块(继承类)
? pipelines.py ————— Pipelines.py代码模块(继承类)
? settings.py ————— Scrapy爬虫的配置文件
? spiders/ ————— Spiders代码模块目录(继承类)
目录结构 pycache/ ————— 缓存目录,无需修改
? spiders/ ————— Spiders代码模块目录(继承类)
? init.py ————— 初始化脚本
? pycache/ ————— 缓存目录,无需修改
内层目录结构 用户自定义的spider代码增加在此处
步骤2:在工程中产生一个Scrapy爬虫
进入工程目录(C:\Users\E5-573G\Desktop\2018寒假\Python\爬虫\scrapy\python123demo)。然后执行如下命令:
该命令行作用:
生成一个名称为demo的spider
在spiders目录下增加代码文件demo.py
#demo.py # -*- coding : utf-8 -*- import scrapy ? class DemoSpider(scrapy.Spider) : name = "demo" allowed_domains = ["python123.io"] start_urls = [‘heep://python123.io/‘] ? def parse (self,response): #parse()用于处理响应,解析内容形成字典,发现新的URL爬取请求 pass
步骤3:配置产生spider爬虫
? 配置:(1)初始URL地址 (2)获取页面后的解析方式
#demo1.py # -*- coding : utf-8 -*- import scrapy ? class DemoSpider(scrapy.Spider) : name = "demo" # allowed_domains = ["python123.io"] #可选 start_urls = [‘heep://python123.io/ws/demo.html‘] ? def parse (self,response): #parse()用于处理响应,解析内容形成字典,发现新的URL爬取请求 fname = response.url.split(‘/‘)[-1] with open (fname,‘wb‘) as f: f.write(response.body) self.log(‘Saved file %s.‘ % fname)
步骤4:运行爬虫,获取网页
在命令行,执行如下命令:
demo爬虫被执行,捕获页面存储在demo.html
回顾demo.py代码
#demo.py # -*- coding : utf-8 -*- import scrapy ? class DemoSpider(scrapy.Spider) : name = "demo" start_urls = [‘heep://python123.io/ws/demo.html‘] ? def parse (self,response): #parse()用于处理响应,解析内容形成字典,发现新的URL爬取请求 fname = response.url.split(‘/‘)[-1] with open (fname,‘wb‘) as f: f.write(response.body) self.log(‘Saved file %s.‘ % fname)
demo.py代码的完整版本
#demo all.py import scrapy ? class DemoSpider(scrapy.Spider) : name = "demo" ? def start_urls(self): urls= [‘heep://python123.io/ws/demo.html‘] for url in urls: yield scrapy.Request(url = url,callback = self.parse) def parse (self,response): #parse()用于处理响应,解析内容形成字典,发现新的URL爬取请求 fname = response.url.split(‘/‘)[-1] with open (fname,‘wb‘) as f: f.write(response.body) self.log(‘Saved file %s.‘ % fname)
yield关键字的作用
yield <---------->生成器:包含yield语句的函数是一个生成器;
生成器每次产生一个值(yield语句),函数被冻结,被唤醒后在产生一个值。生成器是一个不断产生值的函数。
生成器每调用一次在yield位置产生一个值,直到函数执行结束。
生成器相比一次列出所有内容的优势:
? 更节省存储空间;
? 响应更迅速;
? 使用更灵活;
Scrapy爬虫的使用步骤:
? 步骤1:创建一个工程和Spider模板;
? 步骤2:编写Spider
? 步骤3:编写Item Pipeline
? 步骤4:优化配置策略
Scrapy爬虫的数据类型:
? Request类、Response类、Item类
Request类:class scrapy.http.Request()
? Request对象表示一个HTTP请求,由Spider生成,由Downloader执行。
Response类:class scrapy.http.Response()
? Response对象表示一个HTTP响应由Downloader生成,由Spider处理。
Item类: class scrapy.item.Item()
Item对象表示一个从HTML页面中提取的信息内容;由Spider生成,由Item Pipeline处理,Item类似字典类型,可以按照字典类型操作。
Scrapy爬虫提取信息的方法:
scrapy爬虫支持多种HTML信息提取方法:Beautiful Scoop、lxml、re、XPath Selector、CSS Selector
CSS Selector的基本使用:
CSS Selector由W3C组织维护并规范。
”股票数据Scrapy爬虫”实例介绍
功能描述:
目标:获取上交所和深交所所有股票的名称和交易信息
输出:保存到文件中
? 技术路线:scrapy
数据网站的确定
获取股票列表:
东方财富网:http://quote.easymoney.com/stocklist.html
获取个股信息:
百度股票:http://gupiao.baidu.com/stock/
单个股票:http://gupiao.baidu..com/stock/sz002439.html
编写spider处理链接爬取和页面解析,编写pipelines处理信息存储
步骤:
? 步骤1:创建工程和Spider模板;
>scrapy startproject BaiduStocks
>cd BaiduStocks
>scrapy genspider stocks baidu.com
进一步修改spiders/stock.py文件
? 步骤2:编写Spider
配置stocks.py文件
修改对返回页面的处理
修改对新增URL爬取请求的处理
? 步骤3:编写Item Pipeline
原文地址:https://www.cnblogs.com/ST-2017/p/8447518.html