zoukankan      html  css  js  c++  java
  • 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:UsersE5-573GDesktop2018寒假Python爬虫scrapyTwisted-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:UsersE5-573GDesktop2018寒假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:UsersE5-573GDesktop2018寒假Python爬虫scrapypython123demo)。然后执行如下命令:

    该命令行作用:

    生成一个名称为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

     

  • 相关阅读:
    解决mac中wxpython对64位的支持
    python翻译词典实例
    php断点续传
    ubuntu配置telnet服务
    *p++,*++p,*(p++),*(++p)
    在main函数前后执行的函数之 C语言
    串行通讯协议--起止式异步通讯协议(UART)
    TTL电平, RS232电平以及CMOS电平的区别
    C 语言的关键字static 和C++ 的关键字static 有什么区别
    C语言各种数据类型取值范围
  • 原文地址:https://www.cnblogs.com/ST-2017/p/8447518.html
Copyright © 2011-2022 走看看