简介和基础应用

一 . scrapy框架的简介  

1 . 什么是scrapy ? python

  Scrapy 是一个为了爬取网站数据,提取结构性数据而编写的应用框架,很强悍.所谓的框架就是一个已经被集成了各类功能(高性能异步下载 , 队列 , 分布式 , 解析 , 持久化等)的具备很强通用性的项目模板.并发

2 . 安装 app

  Linux : 框架

    pip3 install scrapydom

  Windows : 异步

    a . pip3 install wheelscrapy

    b . 下载 twisted http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted分布式

      已经给大家下好了 --> twisted文件.zip   (请叫我雷锋)ide

    c . 进入下载目录,执行 函数

      pip3 install Twisted‑17.1.0‑cp35‑cp35m‑win_amd64.whl

    d . pip3 install pywin32 

    e . pip3 install scrapy

二 . 基础使用 

  注意 : 在建立项目 / 应用 ,执行程序的时候都是在cmd中进行的

1 . 建立项目 : scrapy startproject  xxx(项目名)

  

  项目结构 : 

frist_boll/
   scrapy.cfg:
   frist_boll/
       __init__.py
       items.py
       pipelines.py
       settings.py
       spiders/
           __init__.py

scrapy.cfg   #项目的主配置信息。(真正爬虫相关的配置信息在settings.py文件中)
items.py     #设置数据存储模板,用于结构化数据,如:Django的Model
pipelines     #数据持久化处理
settings.py  #配置文件,如:递归的层数、并发数,延迟下载等
spiders        #爬虫目录,如:建立文件,编写爬虫解析规则

2 . 建立爬虫应用程序 : 

  cd frist_boll    : 进入项目目录

  scrapy genspider 应用名称 爬虫网页的起始url   : 

  注意 : 若是起始url不知道能够随便写一个,而后进入项目中在进行修改

3 . 编写爬虫文件 : 

  在执行步骤2完毕后,会在项目的spider中生成一个应用名的py文件,文件源码 : 

import scrapy

class FirstHhSpider(scrapy.Spider):
    name = 'first_hh' #应用名称
    #容许爬取的域名(若是遇到非该域名的url则爬取不到数据)
    allowed_domains = ['https://www.xxx.com/']
    #起始爬取的url
    start_urls = ['https://www.xxx.com/']

     #访问起始URL并获取结果后的回调函数,该函数的response参数就是向起始的url发送请求后,获取的响应对象.该函数返回值必须为可迭代对象或者NUll 
     def parse(self, response):
        print(response.text) #获取字符串类型的响应内容
        print(response.body)#获取字节类型的相应内容

4 . 设置修改 settings.py 文件中的配置

修改内容及其结果以下:
19行:USER_AGENT = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36' 
#假装请求载体身份 22行:ROBOTSTXT_OBEY = False
#能够忽略或者不遵照robots协议

5 . 执行爬虫程序 : scrapy crawl 应用名称

  scrapy crawl first_hh   : 这样执行会显示执行的日志信息

  scrapy crawl first_hh -nolog   : 这样执行不会显示执行的日志信息 

 

6 . 爬取糗事百科中段子的内容和标题 

# 在first_hh.py 中写 

import scrapy

class FirstHhiSpider(scrapy.Spider):
    name = 'first_hh'
    allowed_domains = ['https://www.qiushibaike.com/']
    start_urls = ['https://www.qiushibaike.com/']

    def parse(self, response):
        #xpath为response中的方法,能够将xpath表达式直接做用于该函数中
        odiv = response.xpath('//div[@id="content-left"]/div')
        content_list = [] #用于存储解析到的数据
        for div in odiv:
            #xpath函数返回的为列表,列表中存放的数据为Selector类型的数据。咱们解析到的内容被封装在了Selector对象中,须要调用extract()函数将解析的内容从Selecor中取出。
            author = div.xpath('.//div[@class="author clearfix"]/a/h2/text()')[0].extract()
            content=div.xpath('.//div[@class="content"]/span/text()')[0].extract()

            #将解析到的内容封装到字典中
            dic={
                '做者':author,
                '内容':content
            }
            #将数据存储到content_list这个列表中
            content_list.append(dic)

        return content_list

 

  而后执行便可 !!!!!