pyqt与拉勾网爬虫的结合
人力部需要做互联网金融行业的从业人员薪酬分析,起初说的是写脚本,然后他们自己改。但这样不太好,让人事部来修改py脚本不太好,这需要安装py环境和一些第三方包,万一脚本改来改去弄错了,就运行不起来了。
利用pyqt写界面,把要爬的企业填在界面上,点击一个按钮就爬虫,最后生成excel,这样比较方便。py2exe打包后就是客户端了,不依赖于python环境了。
需要安装得是这几个,PyQt是gui库,不用pip安装,下载个exe来安装。eric4 python ide,py2exe用来将py代码打包成exe客户端。
使用qt设计师,拖拽和添加ui控件
这样比较方便,比tkinter的生成控件简单很多。
点击文件-另存为会生成一个ui文件,然后将ui文件转化为py代码。
C:\Python27\Lib\site-packages\PyQt4\pyuic4.bat -o syui.py suoyouxiangmu.ui
如果有环境变量直接pyuic4 -o syui.py suoyouxiangmu.ui就ok。
如果转换有问题,追加-d ,pyuic4 -o -d syui.py suoyouxiangmu.ui,可以显示出出错的原因,我这次就出错了,显示ascii cant decode xxx,去把pyqt库的那个文件加入个重新设置编码sys.setdeafualencoding就可以。
转换完成后,就多了一个syui.py这个文件。 导入syui.py这个文件
class EmittingStream(QObject):
textWritten = pyqtSignal(str)
def write(self, text):
self.textWritten.emit(str(text)) class MyWindow(QtGui.QMainWindow,Ui_MainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
self.setupUi(self)
sys.stdout = EmittingStream(textWritten=self.normalOutputWritten)
#sys.stderr = EmittingStream(textWritten=self.normalOutputWritten) ###注释后,错误将不抛出到控制台 def closeEvent(self, event):
pass
is_now_lagou_crawl = 0
# reply = QtGui.QMessageBox.question(self, u'警告!!!',
# u"你确定关闭窗口吗?", QtGui.QMessageBox.Yes |
# QtGui.QMessageBox.No, QtGui.QMessageBox.No)
# if reply == QtGui.QMessageBox.Yes:
# event.accept()
# else:
# event.ignore() def __del__(self):
sys.stdout = sys.__stdout__
sys.stderr = sys.__stderr__ def normalOutputWritten(self, text):
global stop_print
if stop_print==0:
if len(self.textEdit_2.toPlainText())>50000: ##我这里的textEdit_2就是右边那个黑色的控制台,把sys.stdout.write重定向到这里来,这样的话就像普通的编程一样,直接print在控制台就能显示出来了,不用在python ide和客户端来回切换看输出了。
self.textEdit_2.setPlainText('')
cursor = self.textEdit_2.textCursor()
cursor.movePosition(QtGui.QTextCursor.End)
cursor.insertText(text)
self.textEdit_2.setTextCursor(cursor)
self.textEdit_2.ensureCursorVisible()
app= QtGui.QApplication(sys.argv)
myWindow=MyWindow() myWindow.tabWidget.tabBar().hide() #隐藏标签栏 #设置icon
icon = QtGui.QIcon()
icon.addPixmap(QtGui.QPixmap("logo1.ico"),QtGui.QIcon.Normal, QtGui.QIcon.Off)
myWindow.setWindowIcon(icon) myWindow.setFixedSize(myWindow.width(), myWindow.height()) #设置窗口不允许拉伸
myWindow.show() 。。。。。。。。
sys.exit(app.exec_()) 按钮来绑定一个函数的方法
myWindow.pushButton_18.clicked.connect(funcx) 按钮不可以直接绑定一个需要长时间运行的函数,比如funcx里面有一段代码是requests,如果对方网站能在0.2秒内返回结果还好,如果网站响应时间打,客户端会造成不响应ui在这期间卡死。长时间循环的也不能直接与按钮绑定。
可以绑定一个函数,函数里面开子线程来执行这些任务,就可以不卡了。 拉勾网爬虫需要用到的是 线程池 ip代理池。
不使用cookie请求几次后就会被判定为爬虫了,使用cookie后可以一直爬,这个cookie不需要是登录后的cookie才行,没登录的cookie也可以爬拉钩。但是给公司用,还是代理ip好,万一拉勾网找公司麻烦呢。 爬取界面
生成的excel文件
顺便统计了一下职位数量,因为爬的是网贷之家平台成交量排名前50的p2p网贷平台,比较具有代表性
北京529 成都72 广州137 杭州107 上海243 深圳256 长沙16 武汉4 重庆4 苏州2 石家庄3 东莞17 可以得出结论,北京的网贷平台显然最多,是it工作者最最适合去工作的城市。
其次是上海深圳。过100的还有广州和杭州。 除了北上深广杭,只有成都it还算凑合。其他城市则不适合it从业者,工作职位少是其一,工资普遍少了很多,例如武汉的同职位参考工资差不多就北京深圳的一半左右。
pyqt与拉勾网爬虫的结合的更多相关文章
- .Net实现拉勾网爬虫
前几天看到一个.NET Core写成的爬虫,有些莫名的小兴奋,之前一直用集搜客去爬拉勾网的招聘信息,这个傻瓜化工具相当于用HTML模板页去标记DOM节点,然后在浏览器窗口上模拟人的浏览行为同时跟踪节点 ...
- 【Python3爬虫】拉勾网爬虫
一.思路分析: 在之前写拉勾网的爬虫的时候,总是得到下面这个结果(真是头疼),当你看到下面这个结果的时候,也就意味着被反爬了,因为一些网站会有相应的反爬虫措施,例如很多网站会检测某一段时间某个IP的访 ...
- python3拉勾网爬虫之(您操作太频繁,请稍后访问)
你是否经历过这个:那就对了~因为需要post和相关的cookie来请求~所以,一个简单的代码爬拉钩~~~
- scrapy抓取拉勾网职位信息(三)——爬虫rules内容编写
在上篇中,分析了拉勾网需要跟进的页面url,本篇开始进行代码编写. 在编写代码前,需要对scrapy的数据流走向有一个大致的认识,如果不是很清楚的话建议先看下:scrapy数据流 本篇目标:让拉勾网爬 ...
- 拉勾网爬取全国python职位并数据分析薪资,工作经验,学历等信息
首先前往拉勾网“爬虫”职位相关页面 确定网页的加载方式是JavaScript加载 通过谷歌浏览器开发者工具分析和寻找网页的真实请求,确定真实数据在position.Ajax开头的链接里,请求方式是PO ...
- (Pyhton爬虫03)爬虫初识
原本的想法是这样的:博客整理知识学习的同时,也记录点心情...集中式学习就没这么多好记录的了! 要学习一门技术,首先要简单认识一下爬虫!其实可以参考爬虫第一章! 整体上介绍该技术包含技能,具体能做什么 ...
- 爬虫1.5-ajax数据爬取
目录 爬虫-ajax数据爬取 1. ajax数据 2. selenium+chromedriver知识准备 3. selenium+chromedriver实战拉勾网爬虫代码 爬虫-ajax数据爬取 ...
- python就业班-淘宝-目录.txt
卷 TOSHIBA EXT 的文件夹 PATH 列表卷序列号为 AE86-8E8DF:.│ python就业班-淘宝-目录.txt│ ├─01 网络编程│ ├─01-基本概念│ │ 01-网络通信概述 ...
- 「拉勾网」薪资调查的小爬虫,并将抓取结果保存到excel中
学习Python也有一段时间了,各种理论知识大体上也算略知一二了,今天就进入实战演练:通过Python来编写一个拉勾网薪资调查的小爬虫. 第一步:分析网站的请求过程 我们在查看拉勾网上的招聘信息的时候 ...
随机推荐
- elasticsearch之kibana安装
我用的elasticsearch版本是5.2.2的,kibana也要对应的版本 下载kibana 下载网址:https://artifacts.elastic.co/downloads/kibana/ ...
- ES06--elasticsearch
ES06--elasticsearch unassigned错误解决(手动处理) 查看集群健康状态:curl -XGET http://localhost:9200/_cluster/health ...
- 多线程三:Task
Task是.NET 3.0中推出的,是基于ThreadPool封装的,里面的线程都是来自于ThreadPool. 1.使用Run()方法启动线程 F12查看Run()方法的定义: 发现Run()方法的 ...
- linux 安装 vsftpd服务
yum install vsftpd 修改配置文件 vim /etc/vsftpd/ftpusers vim /etc/vsftpd/user_list 简单起见,注释掉两个配置文件中的所有用户.
- [Intellij] Intellij IDEA 使用中遇见的问题
问题集锦 [IntelliJ IDEA14 + tomcat 设置热部署] 点击deployment查看Deploy at the server startup 中tomcat每次所运行的包是 xxx ...
- Python 私有方法和引用计数初讲
#私有方法的定义与调用 class Cat: def __init__(self): self.name = "" self.age = 0 def __changeage(sel ...
- vmstat和iostat命令进行Linux性能监控
这是我们正在进行的Linux命令和性能监控系列的一部分.vmstat和iostat两个命令都适用于所有主要的类unix系统(Linux/unix/FreeBSD/Solaris). 如果vmstat和 ...
- 从LeNet到SENet——卷积神经网络回顾
从LeNet到SENet——卷积神经网络回顾 从 1998 年经典的 LeNet,到 2012 年历史性的 AlexNet,之后深度学习进入了蓬勃发展阶段,百花齐放,大放异彩,出现了各式各样的不同网络 ...
- Numpy 用于数组的文件输入和输出
将数组以二进制格式保存 np.save 和np.load 是读写磁盘数组数据的两个主要函数.默认情况下,数组是以未压缩的原始二进制格式进行保持在扩展名 为.npy的文件中的 如果文件路径末尾没有扩展名 ...
- 取消excel 工作保护 密码的宏
Option Explicit Public Sub AllInternalPasswords() ' Breaks worksheet and workbook structure password ...