热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Python3安装BuiltWith模块

Python3安装BuiltWith模块原作者:https:www.iflei.compython3-builtwith-module-installation.htmlBuiltWit

Python3 安装 BuiltWith 模块 原作者 :https://www.iflei.com/python3-builtwith-module-installation.html

BuiltWith是一个网站技术信息查询工具,开发团队来自于澳大利亚。利用该网站所提供的功能,你可以查询出某网站背后是由哪些技术来支持的,比如操作系统的类型、所采用的访问量统计服务、采用的发布平台、广告平台、语言框架、聚合功能、页面文档信息、网站编码及操作系统信息等等。可帮助更深一层次了解该网站的运营情况。

但是这么好的工具是 python2 开发的,python3 的语法和 python2 有一些区别,所以 BuiltWith 不能在 python3 下直接使用,我们修改部分代码就可以完美兼容 python3 了

我的 python3 安装在 /usr/local/python/ 目录下,所以 BuiltWith 安装在 /usr/local/python/lib/python3.5/site-packages/builtwith 下。我们把这个目录下的 __init__.py 文件替换成下面的代码即可。

声明一下:以下配置在 CentOS 6测试通过,其他系统请随机应变

如果你还没安装pip,root用户可以用下面命令安装

12 wgethttps://bootstrap.pypa.io/get-pip.pypythonget-pip.py

首先通过pip安装BuiltWith

1 pipinstallbuiltwith

然后覆盖__init__.py文件

__init__.pyPython
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 importsysimportosimportreimportjsonimporturllib.request  importurllib.errorimportchardet   defbuiltwith(url,headers=None,html=None,user_agent='builtwith'):    """Detect the technology used to build a website     >>> builtwith('http://wordpress.com')    {u'blogs': [u'PHP', u'WordPress'], u'font-scripts': [u'Google Font API'], u'web-servers': [u'Nginx'], u'Javascript-frameworks': [u'Modernizr'], u'programming-languages': [u'PHP'], u'cms': [u'WordPress']}    >>> builtwith('http://webscraping.com')    {u'Javascript-frameworks': [u'jQuery', u'Modernizr'], u'web-frameworks': [u'Twitter Bootstrap'], u'web-servers': [u'Nginx']}    >>> builtwith('http://microsoft.com')    {u'Javascript-frameworks': [u'jQuery'], u'mobile-frameworks': [u'jQuery Mobile'], u'operating-systems': [u'Windows Server'], u'web-servers': [u'IIS']}    >>> builtwith('http://jquery.com')    {u'cdn': [u'CloudFlare'], u'web-servers': [u'Nginx'], u'Javascript-frameworks': [u'jQuery', u'Modernizr'], u'programming-languages': [u'PHP'], u'cms': [u'WordPress'], u'blogs': [u'PHP', u'WordPress']}    >>> builtwith('http://joomla.org')    {u'font-scripts': [u'Google Font API'], u'miscellaneous': [u'Gravatar'], u'web-servers': [u'LiteSpeed'], u'Javascript-frameworks': [u'jQuery'], u'programming-languages': [u'PHP'], u'web-frameworks': [u'Twitter Bootstrap'], u'cms': [u'Joomla'], u'video-players': [u'YouTube']}    """    techs={}     # check URL    forapp_name,app_specindata['apps'].items():        if'url'inapp_spec:            ifcontains(url,app_spec['url']):                add_app(techs,app_name,app_spec)     # download content    ifNonein(headers,html):        try:            request=urllib.request.Request(url,None,{'User-Agent':user_agent})            ifhtml:                # already have HTML so just need to make HEAD request for headers                request.get_method=lambda:'HEAD'            response=urllib.request.urlopen(request)            ifheadersisNone:                headers=response.headers            ifhtmlisNone:                html=response.read()                encode_type=chardet.detect(html)                ifencode_type['encoding']=='utf-8':                    html=html.decode('utf-8')                else:                    html=html.decode('gbk')        exceptExceptionase:            print('Error:',e)            request=None     # check headers    ifheaders:        forapp_name,app_specindata['apps'].items():            if'headers'inapp_spec:                ifcontains_dict(headers,app_spec['headers']):                    add_app(techs,app_name,app_spec)     # check html    ifhtml:        forapp_name,app_specindata['apps'].items():            forkeyin'html','script':                snippets=app_spec.get(key,[])                ifnotisinstance(snippets,list):                    snippets=[snippets]                forsnippetinsnippets:                    ifcontains(html,snippet):                        add_app(techs,app_name,app_spec)                        break         # check meta        # XXX add proper meta data parsing        metas=dict(re.compile(']*?name=[\'"]([^>]*?)[\'"][^>]*?cOntent=[\'"]([^>]*?)[\'"][^>]*?>',re.IGNORECASE).findall(html))        forapp_name,app_specindata['apps'].items():            forname,contentinapp_spec.get('meta',{}).items():                ifnameinmetas:                    ifcontains(metas[name],content):                        add_app(techs,app_name,app_spec)                        break                    returntechsparse=builtwith   defadd_app(techs,app_name,app_spec):    """Add this app to technology    """    forcategoryinget_categories(app_spec):        ifcategorynotintechs:            techs[category]=[]        ifapp_namenotintechs[category]:            techs[category].append(app_name)            implies=app_spec.get('implies',[])            ifnotisinstance(implies,list):                implies=[implies]            forapp_nameinimplies:                add_app(techs,app_name,data['apps'][app_name])           defget_categories(app_spec):    """Return category names for this app_spec    """    return[data['categories'][str(c_id)]forc_idinapp_spec['cats']]  defcontains(v,regex):    """Removes meta data from regex then checks for a regex match    """    returnre.compile(regex.split('\\;')[0],flags=re.IGNORECASE).search(v)  defcontains_dict(d1,d2):    """Takes 2 dictionaries        Returns True if d1 contains all items in d2"""    fork2,v2ind2.items():        v1=d1.get(k2)        ifv1:            ifnotcontains(v1,v2):                returnFalse        else:            returnFalse    returnTrue  defload_apps(filename='apps.json.py'):    """Load apps from Wappalyzer JSON (https://github.com/ElbertF/Wappalyzer)    """    # get the path of this filename relative to the current script    # XXX add support to download update    filename=os.path.join(os.getcwd(),os.path.dirname(__file__),filename)    returnjson.load(open(filename))data=load_apps()  if__name__=='__main__':    urls=sys.argv[1:]    ifurls:        forurlinurls:            results=builtwith(url)            forresultinsorted(results.items()):                print('%s: %s'%result)    else:        print('Usage: %s url1 [url2 url3 ...]'%sys.argv[0])

在网页编码时需要通过 chardet.detect() 获取原网页的编码

需要安装 chardet 包,我们通过 pip 安装

1 pipinstallchardet

下面我们测试一下BuiltWith

Python3 安装 BuiltWith 模块



推荐阅读
  • Python Flask学习之安装SQL,python3,Pycharm(网上下载安装即可)
    1,下载时更改pypi源。可以额外安装虚拟化环境:pipinstall-ihttp:pypi.douban.comsimple--trusted-hos ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • 使用正则表达式爬取36Kr网站首页新闻的操作步骤和代码示例
    本文介绍了使用正则表达式来爬取36Kr网站首页所有新闻的操作步骤和代码示例。通过访问网站、查找关键词、编写代码等步骤,可以获取到网站首页的新闻数据。代码示例使用Python编写,并使用正则表达式来提取所需的数据。详细的操作步骤和代码示例可以参考本文内容。 ... [详细]
  • 本文总结了使用不同方式生成 Dataframe 的方法,包括通过CSV文件、Excel文件、python dictionary、List of tuples和List of dictionary。同时介绍了一些注意事项,如使用绝对路径引入文件和安装xlrd包来读取Excel文件。 ... [详细]
  • 【爬虫训练场】:分页爬虫案例设计Demo,Python Flask与MySQL的完美连接
    网站类应用,一定离不开MySQL,所以本案例将带着大家学习一下,通过Flask调用MySQL数据,并实现分页呈现。类被称作蓝图,它是一个存储操作方法的容器,Flask可以通过Blu ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了常用#免费%代理IP库&整理*收藏——实时@更新(大概)相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 写在前面最近在学习爬虫,在熟悉了Python语言和BeautifulSoup4后打算下个爬虫框架试试。没想到啊,这坑太深了。。。看了看相关介绍后选择了Scrapy框架,然后兴高采烈的 ... [详细]
  • python教程分享Python获取时光网电影数据的实例代码
    一、前言有时候觉得电影真是人类有史以来最伟大的发明,我喜欢看电影,看电影可以让我们增长见闻,学习知识。从某种角度上而言,电影凭借自身独有的魅力大大延长了人类的”寿命&r ... [详细]
  • 安装mysqlclient失败解决办法
    本文介绍了在MAC系统中,使用django使用mysql数据库报错的解决办法。通过源码安装mysqlclient或将mysql_config添加到系统环境变量中,可以解决安装mysqlclient失败的问题。同时,还介绍了查看mysql安装路径和使配置文件生效的方法。 ... [详细]
  • 在springmvc框架中,前台ajax调用方法,对图片批量下载,如何弹出提示保存位置选框?Controller方法 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • Python操作MySQL(pymysql模块)详解及示例代码
    本文介绍了使用Python操作MySQL数据库的方法,详细讲解了pymysql模块的安装和连接MySQL数据库的步骤,并提供了示例代码。内容涵盖了创建表、插入数据、查询数据等操作,帮助读者快速掌握Python操作MySQL的技巧。 ... [详细]
  • 本文介绍了在Windows系统下安装Python、setuptools、pip和virtualenv的步骤,以及安装过程中需要注意的事项。详细介绍了Python2.7.4和Python3.3.2的安装路径,以及如何使用easy_install安装setuptools。同时提醒用户在安装完setuptools后,需要继续安装pip,并注意不要将Python的目录添加到系统的环境变量中。最后,还介绍了通过下载ez_setup.py来安装setuptools的方法。 ... [详细]
  • Python已成为全球最受欢迎的编程语言之一,然而Python程序的安全运行存在一定的风险。本文介绍了Python程序安全运行需要满足的三个条件,即系统路径上的每个条目都处于安全的位置、"主脚本"所在的目录始终位于系统路径中、若python命令使用-c和-m选项,调用程序的目录也必须是安全的。同时,文章还提出了一些预防措施,如避免将下载文件夹作为当前工作目录、使用pip所在路径而不是直接使用python命令等。对于初学Python的读者来说,这些内容将有所帮助。 ... [详细]
  • 通过Anaconda安装tensorflow,并安装运行spyder编译器的完整教程
    本文提供了一个完整的教程,介绍了如何通过Anaconda安装tensorflow,并安装运行spyder编译器。文章详细介绍了安装Anaconda、创建tensorflow环境、安装GPU版本tensorflow、安装和运行Spyder编译器以及安装OpenCV等步骤。该教程适用于Windows 8操作系统,并提供了相关的网址供参考。通过本教程,读者可以轻松地安装和配置tensorflow环境,以及运行spyder编译器进行开发。 ... [详细]
author-avatar
手机用户2502859387
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有