Scrapy基礎————將不定長度的URL進行固定長度寫入Item中
阿新 • • 發佈:2017-05-23
util img dig style lib 定義 項目 不存在 spa python3中所有字符都是Unicode編碼,而md5則是對UTF-8的編碼進行運算,不難理解
前面講到將每篇文章的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 importget_md5 artical_item["url_object_id"] = get_md5(response.url)
至此,所有的Item字段都添加完畢,剩下的就是寫入數據庫了
Scrapy基礎————將不定長度的URL進行固定長度寫入Item中