scrapy中用hashlib.md5|scrapy中用hashlib.md5 处理 url
scrapy中用hashlib.md5 处理 url
在settings同一目录下,建立package叫 utils,并在其中新建 common.py
。
先把hashlib中md5()实例化。然后用update传入url。再用 hexdigest() 提取摘要。
# -*- coding:utf-8 -*-
__author__ = "Tim"
import hashlibdef get_md(url):
m = hashlib.md5()
m.update(url)
return m.hexdigest()if __name__ == "__main__":
print (get_md("http://jobbole.com"))
最终显示:
unicode不能被hash。这个函数在python2中调用没问题,因为python3程序中的编码是unicode。但是
hash.md5()
不接受unicode,所以这里encode成utf-8
。Traceback (most recent call last):
File "/Users/macroot/imooc/ArticleSpider/ArticleSpider/utils/common.py", line 13, in
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 hashlibdef get_md(url):
m = hashlib.md5()
m.update(url)
return m.hexdigest()if __name__ == "__main__":
print (get_md(("http://jobbole.com").encode("utf-8")))
写成如下也可以接受,不打括号
#...
if __name__ == "__main__":
print (get_md("http://jobbole.com".encode("utf-8")))
结果
0efdf49af511fd88681529ef8c2e5fbf
判断传入值编码 因为不知道传入是什么编码。
python2可以判断是否是unicode:
if isinstance(url, unicode):
【scrapy中用hashlib.md5|scrapy中用hashlib.md5 处理 url】python3中没有unicode这个关键词了。
str
这个关键词在python3中代表的就是unicode。# -*- coding:utf-8 -*-
__author__ = "Tim"
import hashlibdef 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"))
推荐阅读
- Scrapy定时爬虫总结&Docker/K8s部署
- Scrapy1.4.0之抓取58同城房源详解(一)
- sqlite|python中用SQLite3添加 主键约束 唯一约束 非空约束 外键约束(约束的介绍以及设置)
- 企业管理中用户数据同步机制解决思路
- 在Linux中用C语言在tap0->app->tap1路径上发送数据包
- scrapy|scrapy 框架中用ssh连接远程服务器
- Scrapy|python之Scrapy 的Xpath常用定位相关
- Scrapy爬取顶点小说网
- 初探scrapy(用scrapy爬取一部小说)
- Scrapy爬取小说简单逻辑