Python

解决python模块报错:“bz2 module is not available, No module named '_bz2'”

之前python在用pip安装scrapy模块的时候遇到过这个情况,但只是记笔记没有总结出来,今天又遇到了一次,索性博客记录一下。 解决方案 安装 bzip2-devel: 方法一: yum install bzip2-devel 方法二: 如果不行,可以编译安装: wget http://www.bzip.org/1.0.6/bzip2-1.0.6.tar.gz && tar -zxf bzip2-1.0.6.tar.gz &&…继续阅读 »
Python

解决Python3 requests 响应头中文GBK编码报错,无法请求

问题表现: 响应头中有gbk编码的中文,导致requests无法解码读取header。 http包如图: Python 3.4.3 (default, Aug 25 2017, 16:49:50) [GCC 4.8.5 20150623 (Red Hat 4.8.5-11)] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import requests >>> res = requests.get('http://down.chinaz.com/download.asp?id=35&…继续阅读 »
Python

Python event控制多线程停止方案

背景: 多线程跑系统识别,当某线程得到结果后,需要优雅的停止平行的其他线程,结束本次任务。 Python threading模块不同于其它语言之处在于它没有提供线程的终止方法,而且python的多线程设计本身也是不希望用户这么做,但是很多时候我们得到某个结果后为了节省不必要的资源 必须停止其他线…继续阅读 »
Python

Python Celery 多线程取结果报错:'list' object has no attribute 'decode'

这个问题困扰了我估计有一个星期问题,而问题的一开始我没有任何头绪,问题的表现就是调用节点去请求任务时,时常报错:   报错信息诸如: Protocol Error: , b'\x00\x00\x00\x00\x00\x00\x00\x00\x00*3' Error while reading from socket: (9, 'Bad file descriptor') 'int' object has no attribute 'decode' name 'self' is not defined only …继续阅读 »
Python

Python-DBUtils 使用mysql数据库连接池提升效率

随着全网扫描项目的开发,越来越细致的问题暴露出来,从能用到用的好,还有很长的路要走。 这个问题前段时间就发现了,程序一般跑个一天会越来越慢,直到某个时候程序彻底崩了,而且最后的报错也一般是mysql的报错: pymysql.err.OperationalError: (2013, 'Lost connection to MySQL server during query ([Errno 104] Co…继续阅读 »
Python

理解Queue队列中join()与task_done()的关系

在网上大多关于join()与task_done()的结束原话是这样的: Queue.task_done() 在完成一项工作之后,Queue.task_done()函数向任务已经完成的队列发送一个信号 Queue.join() 实际上意味着等到队列为空,再执行别的操作 但是可能很多人还是不太理解,这里以我自己的理解来阐述这两者的关联。 理解 如果线程里…继续阅读 »
Python

Python requests响应内容乱码解决方案

一般在针对性的爬取某个网站的时候可能不需要考虑太多这方面问题,因为一个网站的编码基本是固定的,但是当需要去请求大量编码各不相同的网站时,自动解码就显得尤为重要。 这几天在用requests模块扫描大量网站首页的时候发现有大量的乱码,我们都知道requests中的encoding属性是可以自动识别网…继续阅读 »
Python

Python 获取顶级域名模块ExtractLevelDomain[自定义等级]

这个模块在很多爬虫项目里应该还是挺实用的,不过我是用来批量查询whois和备案单位的,因为库里有大量的子域名,所以只需要对同顶级域名的其中一个域名获取信息即可,否则会造成数据库大量冗余信息,而且在后期更新的时候还会造成系统及网络不必要的压力。 找了这么个提取顶级域名的模…继续阅读 »