簡介和基礎應用

一 . 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

 

  而後執行便可 !!!!!

相關文章
相關標籤/搜索