scrapy中用hashlib.md5 處理 url

scrapy中用hashlib.md5 處理 url

在settings同一目錄下,建立package叫 utils,并在其中新建 common.py

先把hashlib中md5()實(shí)例化。然后用update傳入url。再用 hexdigest() 提取摘要。

# -*- coding:utf-8 -*-
__author__ = "Tim"
import hashlib


def get_md(url):
    m = hashlib.md5()
    m.update(url)
    return m.hexdigest()


if __name__ == "__main__":
    print (get_md("http://jobbole.com"))

最終顯示:

unicode不能被hash。這個(gè)函數(shù)在python2中調(diào)用沒(méi)問(wèn)題,因?yàn)閜ython3程序中的編碼是unicode。但是hash.md5()不接受unicode,所以這里encode成utf-8。

Traceback (most recent call last):
  File "/Users/macroot/imooc/ArticleSpider/ArticleSpider/utils/common.py", line 13, in <module>
    print (get_md("http://jobbole.com"))
  File "/Users/macroot/imooc/ArticleSpider/ArticleSpider/utils/common.py", line 8, in get_md
    m.update(url)
TypeError: Unicode-objects must be encoded before hashing
# -*- coding:utf-8 -*-
__author__ = "Tim"
import hashlib


def get_md(url):
    m = hashlib.md5()
    m.update(url)
    return m.hexdigest()


if __name__ == "__main__":
    print (get_md(("http://jobbole.com").encode("utf-8")))

寫(xiě)成如下也可以接受,不打括號(hào)

#...
if __name__ == "__main__":
    print (get_md("http://jobbole.com".encode("utf-8")))

結(jié)果

0efdf49af511fd88681529ef8c2e5fbf

判斷傳入值編碼

因?yàn)椴恢纻魅胧鞘裁淳幋a。

python2可以判斷是否是unicode:

if isinstance(url, unicode):

python3中沒(méi)有unicode這個(gè)關(guān)鍵詞了。str這個(gè)關(guān)鍵詞在python3中代表的就是unicode。

# -*- coding:utf-8 -*-
__author__ = "Tim"
import hashlib


def get_md(url):
    if isinstance(url, str):
        url = url.encode("utf-8")

    m = hashlib.md5()
    m.update(url)
    return m.hexdigest()


if __name__ == "__main__":
    print (get_md("http://jobbole.com"))
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • python學(xué)習(xí)筆記 聲明:學(xué)習(xí)筆記主要是根據(jù)廖雪峰官方網(wǎng)站python學(xué)習(xí)學(xué)習(xí)的,另外根據(jù)自己平時(shí)的積累進(jìn)行修正...
    renyangfar閱讀 3,249評(píng)論 0 10
  • scrapy學(xué)習(xí)筆記(有示例版) 我的博客 scrapy學(xué)習(xí)筆記1.使用scrapy1.1創(chuàng)建工程1.2創(chuàng)建爬蟲(chóng)模...
    陳思煜閱讀 13,079評(píng)論 4 46
  • 一.先來(lái)研究下這個(gè)軟件-》Appicon and Launchimage Maker 首先打開(kāi)你電腦上的AppSt...
    小楓123閱讀 2,361評(píng)論 0 0
  • 在人潮擁擠的火車(chē)站,有一點(diǎn)恍惚,回想著這短暫的兩個(gè)月,遇見(jiàn)很多人才會(huì)有很多的記憶或許。去北京的第四天,去面試了...
    微小44燁墨閱讀 464評(píng)論 0 0
  • “碗口大的茄子---老籽(子)黃皮(陂)!” 每當(dāng)有人問(wèn)他哪里人,他便回此歇后語(yǔ),然后得意地咧著大嘴,哈哈大笑,露...
    Bernardxiao閱讀 753評(píng)論 2 0

友情鏈接更多精彩內(nèi)容