1. 程式人生 > >Scrapy基礎————將不定長度的URL進行固定長度寫入Item中

Scrapy基礎————將不定長度的URL進行固定長度寫入Item中

util img dig style lib 定義 項目 不存在 spa


前面講到將每篇文章的URL寫入Item,但是每個url的長度是不同的,
可以在Item中設置一個字段怎樣使得每個URL的長度相同,這就需要對每個URL進行md5
運算,使得長度統一,再加入到設定的Item字段中
從項目的根目錄下新建一個文件夾,把所有能用到的自定義方法寫入,,命名為util
並從util下新建一個common.py文件

寫入以下:

1 import hashlib
2 def get_md5(url):
3     if isinstance(url,str):                    
4         url = url.encode("utf-8
") 5 m = hashlib.md5() 6 m.update(url) 7 return m.hexdigest()

轉換編碼的講解

python3中所有字符都是Unicode編碼,而md5則是對UTF-8的編碼進行運算,不難理解
計算在cpu中進行,而在內存中存儲的應該是utf-8編碼的,為了節省內存嘛,而在python2中則不存在這種情況,因為python3中將所有的字符都以Unicode
進行編碼,所有python3則不會出現亂碼問題

技術分享

技術分享



最後從jobbole.py中引入該方法,並寫入Item這個字段

from ArticalSpider.util.common import
get_md5 artical_item["url_object_id"] = get_md5(response.url)


至此,所有的Item字段都添加完畢,剩下的就是寫入數據庫了




Scrapy基礎————將不定長度的URL進行固定長度寫入Item中