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

Mysql数据迁移启动报错:/mysqld: File ‘./mysql-bin.000007’ not found

此贴为备忘帖: 背景:将mysql 的var目录数据全部迁移至另一mysql服务器,权限正常的情况下 无法启动mysql,报错:  ERROR! MySQL is not running, but lock file (/var/lock/subsys/mysql) exists 查看var下的localhost.localdomain.err日志,报错为: 170322 14:47:52 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/var 170322 …继续阅读 »
Python

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

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

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

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

Python whois查询模块完美修复版【基于Linux whois】

全网域名扫描项目还在进行中,之前想的很简单的whois提取本以为很简单,看了下linux下whois出来的结果格式很多都不一样,自己写的话是比较麻烦的。 在线接口的话找了很多,还是只有站长之家最靠谱,但是由于量很大,而且又有请求限制,还是决定再找找whois的轮子,找了两个,一个很烂,.cn  .com…继续阅读 »
Python

Python selenium+PhantomJS实现爬取动态JS[自定义header]

爬取js的必要性在这里就不必多说了,也就是直接请求html并不会返回js所加载的数据,只有经过浏览器渲染后才回出现数据,比如在http://s.tool.chinaz.com/same 查询出的数据是经过js加载的(一方面为了数据不会被搜索引擎爬取,另一方面降低服务器并发负载)。 这种情况python一般可以用PhantomJS实现,这个工具…继续阅读 »