Scrapy 安装与使用

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

 

 

posted @ 2018-02-13 22:07  【SmarT】  阅读(410)  评论(0编辑  收藏  举报