Scrapy爬蟲框架
Scrapy不是一個函數功能庫而是一個爬蟲框架
1.Scrapy爬蟲框架結構
- 爬蟲框架
- 爬蟲框架是實現爬蟲功能的一個軟件結構和功能組件集合。
- 爬蟲框架是一個半成品,能夠幫助用戶實現專業網絡爬蟲。
“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
步驟:
- 建立一個Scrapy爬蟲工程
- 在工程中產生一個Scrapy爬蟲
- 配置產生的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 生成器每次只返回一個值進行操作,而普通寫法需要返回全部值,當數值較大時,佔用大量存儲空間。