1. 程式人生 > >python筆記26(爬蟲進階)

python筆記26(爬蟲進階)

一、scrapy框架簡介

1、什麼是Scrapy?

  Scrapy是一個為了爬取網站資料,提取結構性資料而編寫的應用框架,非常出名,非常強悍。所謂的框架就是一個已經被集成了各種功能(高效能非同步下載,佇列,分散式,解析,持久化等)的具有很強通用性的專案模板。對於框架的學習,重點是要學習其框架的特性、各個功能的用法即可。

2、安裝

  Linux:

      pip3 install scrapy

 

  Windows:

      a. pip3 install wheel

      b. 下載twisted http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted(下載被編譯過的資料)

      c. 進入下載目錄,執行 pip3 install Twisted‑17.1.0‑cp35‑cp35m‑win_amd64.whl

      d. pip3 install pywin32

      

e. pip3 install scrapy

備註:輸入scrapy檢查如果有對應的版本資訊則表示安裝完成。

3、基礎使用

  1)建立專案:scrapy startproject 專案名稱

    專案結構:

project_name/
   scrapy.cfg:
   project_name/
       __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 project_name(進入專案目錄)

      scrapy genspider 應用名稱 爬取網頁的起始url (例如:scrapy genspider qiubai www.qiushibaike.com)

  3)編寫爬蟲檔案:在步驟2執行完畢後,會在專案的spiders中生成一個應用名的py爬蟲檔案,檔案原始碼如下:

# -*- coding: utf-8 -*-
import scrapy


class QiubaiSpider(scrapy.Spider):
    #爬蟲檔案的名稱:可以指定某一個具體的爬蟲檔案
    name = 'qiubai' #應用名稱
    #允許爬取的域名(如果遇到非該域名的url則爬取不到資料)
    allowed_domains = ['https://www.qiushibaike.com/']
    #起始爬取的url:工程被執行後就可以獲取該列表中的url所對應的頁面
    start_urls = ['https://www.qiushibaike.com/']

     #訪問起始URL並獲取結果後的回撥函式,該函式的response引數就是向起始的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  應用名稱  --nolog

4、將糗百首頁中段子的內容和標題進行爬取