Python爬蟲學習日誌(9)

Scrapy不是一個函數功能庫而是一個爬蟲框架

1.Scrapy爬蟲框架結構

  1. 爬蟲框架
  • 爬蟲框架是實現爬蟲功能的一個軟件結構功能組件集合。
  • 爬蟲框架是一個半成品,能夠幫助用戶實現專業網絡爬蟲。
“5+2”結構

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

2.Scrapy爬蟲框架解析

不需修改的部分

在這裏插入圖片描述

Downloader Middleware(中間鍵)
  • 目的:實施Engine、Scheduler和Downloader之間進行用戶可配置的控制
  • 功能:修改、丟棄、新增請求或響應
    用戶可以編寫配置代碼
用戶編寫的部分

在這裏插入圖片描述

Spider Middleware(中間鍵)
  • 目的:對請求和爬取項的再處理
  • 功能:修改、丟棄、新增請求或爬取項
    用戶可以編寫配置代碼

3.requests庫和Scrapy爬蟲的比較

在這裏插入圖片描述
在這裏插入圖片描述
選取爬蟲的依據:

  • 非常小的需求,requests庫。
  • 不太小的需求,Scrapy框架。
  • 定製程度很高的需求(不考慮規模),自搭框架,requests>Scrapy.

4.Scrapy爬蟲的常用命令行

在這裏插入圖片描述

在這裏插入圖片描述
在這裏插入圖片描述

5.Scrapy爬蟲的一個實例

demo網頁 http://python123.io/ws/demo.html

步驟:
  1. 建立一個Scrapy爬蟲工程
  2. 在工程中產生一個Scrapy爬蟲
  3. 配置產生的spider爬蟲
命令行中輸入:

1) 建立工程:> scrapy startproject python123demo
2)生成爬蟲(也可以手動生成) >cd python123demo;
>scrapy genspider demo python123.io

在這裏插入圖片描述

在這裏插入圖片描述
在這裏插入圖片描述

在這裏插入圖片描述

yield關鍵字的使用

在這裏插入圖片描述
生成器相比一次列出所有內容的優勢

  • 更節省存儲空間
  • 響應更迅速
  • 使用更靈活
#生成器
def gen(n):
    for i in range(n):
        yield i**2

for i in gen(5):
    print(i, " ",end="")#關鍵字end可以用於將結果輸出到同一行,或者在輸出的末尾添加不同的字符,此處爲空格
    
#普通寫法
def square(n):
    ls = [i**2 for i in range(n)]
    return ls

for i in square(5):
    print(i, " ", end="")

輸出結果:

0  1  4  9  16  0  1  4  9  16  
  • yield 生成器每次只返回一個值進行操作,而普通寫法需要返回全部值,當數值較大時,佔用大量存儲空間。

6.Scrapy爬蟲的基本使用

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章