Python3中有什么包可以替代Python2中的Builtwith?

braid123
  • 24

IDE:Pycharm(Only Python 3.6)
我想使用包builtwith来查看某网站搭建所使用的框架、语言。但是,python2中builtwith所需的urllib2在python3中被用urllib.request, urllib.parse, urllib.error替代。

所以我想通过改动builtwith的文档来达到同样的效果,让它适合python3改动了__init__.py中的prite语法,然后except Exception as e:,但是代码逻辑还是不对,执行builtwith.parse('http://www.hao123.com')接收不到url返回的数据`

try:
   request= urllib.request.Request(url, None, {'User-Agent': user_agent})
   #官方写法:request = urllib2.Request(url, None, {'User-Agent': user_agent})
if html:
   request.get_method = lambda: 'HEAD'
   response = urllib.request.urlopen(url)
   #官方写法:response = urllib2.urlopen(request)`

请问上图部分有错误吗?还是说,我还需要改动其他地方?或者如问题所述,有什么包可以替换Python2中的builtwith达到我说的效果也可以啊?
下面链接是完整的代码,方便各位比照:
我修改的builtwith__init__.py链接:我自己改的,跪求好心人看看
官方文档builtwith__init__.py链接:官方文档

回复
阅读 4.4k
2 个回答
rkHy
  • 1
新手上路,请多包涵

这个好像还需要对网页内容解码

XIAOXXX
  • 75
if html is None:
    html = response.read()

还需要改成

if html is None:
    html = response.read()
    html = html.decode('utf-8')

如果网站不是uif-8就需要把这个设置成响应的解码格式,当然也有其他库来判断编码格式自动切换。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏