人力部需要做互联网金融行业的从业人员薪酬分析,起初说的是写脚本,然后他们自己改。但这样不太好,让人事部来修改py脚本不太好,这需要安装py环境和一些第三方包,万一脚本改来改去弄错了,就运行不起来了。

利用pyqt写界面,把要爬的企业填在界面上,点击一个按钮就爬虫,最后生成excel,这样比较方便。py2exe打包后就是客户端了,不依赖于python环境了。

需要安装得是这几个,PyQt是gui库,不用pip安装,下载个exe来安装。eric4 python ide,py2exe用来将py代码打包成exe客户端。

使用qt设计师,拖拽和添加ui控件

这样比较方便,比tkinter的生成控件简单很多。

点击文件-另存为会生成一个ui文件,然后将ui文件转化为py代码。

  1. C:\Python27\Lib\site-packages\PyQt4\pyuic4.bat -o syui.py suoyouxiangmu.ui
    如果有环境变量直接pyuic4 -o syui.py suoyouxiangmu.uiok
    如果转换有问题,追加-d pyuic4 -o -d syui.py suoyouxiangmu.ui,可以显示出出错的原因,我这次就出错了,显示ascii cant decode xxx,去把pyqt库的那个文件加入个重新设置编码sys.setdeafualencoding就可以。
    转换完成后,就多了一个syui.py这个文件。
  2.  
  3. 导入syui.py这个文件
  1. class EmittingStream(QObject):
    textWritten = pyqtSignal(str)
    def write(self, text):
    self.textWritten.emit(str(text))
  2.  
  3. 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) ###注释后,错误将不抛出到控制台
  4.  
  5. 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()
  6.  
  7. def __del__(self):
    sys.stdout = sys.__stdout__
    sys.stderr = sys.__stderr__
  8.  
  9. 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()
  1. app= QtGui.QApplication(sys.argv)
    myWindow=MyWindow()
  2.  
  3. myWindow.tabWidget.tabBar().hide() #隐藏标签栏
  4.  
  5. #设置icon
    icon = QtGui.QIcon()
    icon.addPixmap(QtGui.QPixmap("logo1.ico"),QtGui.QIcon.Normal, QtGui.QIcon.Off)
    myWindow.setWindowIcon(icon)
  6.  
  7. myWindow.setFixedSize(myWindow.width(), myWindow.height()) #设置窗口不允许拉伸
    myWindow.show()
  8.  
  9. 。。。。。。。。
  1. sys.exit(app.exec_())
  2.  
  3. 按钮来绑定一个函数的方法
  1. myWindow.pushButton_18.clicked.connect(funcx)
  2.  
  3. 按钮不可以直接绑定一个需要长时间运行的函数,比如funcx里面有一段代码是requests,如果对方网站能在0.2秒内返回结果还好,如果网站响应时间打,客户端会造成不响应ui在这期间卡死。长时间循环的也不能直接与按钮绑定。
    可以绑定一个函数,函数里面开子线程来执行这些任务,就可以不卡了。
  4.  
  5. 拉勾网爬虫需要用到的是 线程池 ip代理池。
    不使用cookie请求几次后就会被判定为爬虫了,使用cookie后可以一直爬,这个cookie不需要是登录后的cookie才行,没登录的cookie也可以爬拉钩。但是给公司用,还是代理ip好,万一拉勾网找公司麻烦呢。
  6.  
  7. 爬取界面

  1. 生成的excel文件

  1.  
  1. 顺便统计了一下职位数量,因为爬的是网贷之家平台成交量排名前50p2p网贷平台,比较具有代表性
    北京529  成都72 广州137 杭州107 上海243 深圳256 长沙16 武汉4 重庆4 苏州2  石家庄3 东莞17
  2.  
  3. 可以得出结论,北京的网贷平台显然最多,是it工作者最最适合去工作的城市。
    其次是上海深圳。过100的还有广州和杭州。
  4.  
  5. 除了北上深广杭,只有成都it还算凑合。其他城市则不适合it从业者,工作职位少是其一,工资普遍少了很多,例如武汉的同职位参考工资差不多就北京深圳的一半左右。

pyqt与拉勾网爬虫的结合的更多相关文章

  1. .Net实现拉勾网爬虫

    前几天看到一个.NET Core写成的爬虫,有些莫名的小兴奋,之前一直用集搜客去爬拉勾网的招聘信息,这个傻瓜化工具相当于用HTML模板页去标记DOM节点,然后在浏览器窗口上模拟人的浏览行为同时跟踪节点 ...

  2. 【Python3爬虫】拉勾网爬虫

    一.思路分析: 在之前写拉勾网的爬虫的时候,总是得到下面这个结果(真是头疼),当你看到下面这个结果的时候,也就意味着被反爬了,因为一些网站会有相应的反爬虫措施,例如很多网站会检测某一段时间某个IP的访 ...

  3. python3拉勾网爬虫之(您操作太频繁,请稍后访问)

    你是否经历过这个:那就对了~因为需要post和相关的cookie来请求~所以,一个简单的代码爬拉钩~~~

  4. scrapy抓取拉勾网职位信息(三)——爬虫rules内容编写

    在上篇中,分析了拉勾网需要跟进的页面url,本篇开始进行代码编写. 在编写代码前,需要对scrapy的数据流走向有一个大致的认识,如果不是很清楚的话建议先看下:scrapy数据流 本篇目标:让拉勾网爬 ...

  5. 拉勾网爬取全国python职位并数据分析薪资,工作经验,学历等信息

    首先前往拉勾网“爬虫”职位相关页面 确定网页的加载方式是JavaScript加载 通过谷歌浏览器开发者工具分析和寻找网页的真实请求,确定真实数据在position.Ajax开头的链接里,请求方式是PO ...

  6. (Pyhton爬虫03)爬虫初识

    原本的想法是这样的:博客整理知识学习的同时,也记录点心情...集中式学习就没这么多好记录的了! 要学习一门技术,首先要简单认识一下爬虫!其实可以参考爬虫第一章! 整体上介绍该技术包含技能,具体能做什么 ...

  7. 爬虫1.5-ajax数据爬取

    目录 爬虫-ajax数据爬取 1. ajax数据 2. selenium+chromedriver知识准备 3. selenium+chromedriver实战拉勾网爬虫代码 爬虫-ajax数据爬取 ...

  8. python就业班-淘宝-目录.txt

    卷 TOSHIBA EXT 的文件夹 PATH 列表卷序列号为 AE86-8E8DF:.│ python就业班-淘宝-目录.txt│ ├─01 网络编程│ ├─01-基本概念│ │ 01-网络通信概述 ...

  9. 「拉勾网」薪资调查的小爬虫,并将抓取结果保存到excel中

    学习Python也有一段时间了,各种理论知识大体上也算略知一二了,今天就进入实战演练:通过Python来编写一个拉勾网薪资调查的小爬虫. 第一步:分析网站的请求过程 我们在查看拉勾网上的招聘信息的时候 ...

随机推荐

  1. JS压缩工具配置

    1.打开文件夹 修改yui.reg 里面修改为自己的目录. 2.yuicompressor.bat  修改SET YUIFOLDER=E:\JS常用工具\JS_compres\build 为自己的目录

  2. idea properties文件unicode码问题

    在git hub上下载了个工程.但是properties文件一直显示不了中文: # \u662F\u5426\u4F7F\u7528\u8FDC\u7A0B\u914D\u7F6E\u6587\u4E ...

  3. 【css】css 背景色渐变兼容写法

    最近在项目中,有很多地方都用到了线性渐变,比如:表单提交按钮的背景,数据展示的标题背景等等,按照以前的做法是切 1px 图片然后 repeat-x.下面我将介绍如何用 css 来完成该效果. css3 ...

  4. JQ 获取窗体的高度

    alert($(window).height()); //浏览器时下窗口可视区域高度 alert($(document).height()); //浏览器时下窗口文档的高度 alert($(docum ...

  5. 【转】nGrinder 简易使用教程

    https://www.cnblogs.com/jwentest/p/7136727.html 背景 性能压测工具之前使用的是jmeter,这次说的是nGrinder,先直接搬运两者之间的比较 比较点 ...

  6. Python __str__函数

    class Cat: def __init__(self,_name): self.name = _name def __str__(self): return "i am %s" ...

  7. java 模拟一个单向链表

    class Node { //当前节点 private String data; //下个节点 private Node next; //当前节点 public void setData(String ...

  8. 实验四 使用ASP.NET内置对象 总结

    这次实验内容是ASP.NET的一些内置对象的熟悉,感觉看到了上学期JSP的影子,很多地方都很像.像Response对象,Request对象,Context对象等等.以前我老是搞混Response对象和 ...

  9. ADB 设置远程调试

    Version:0.9 StartHTML:-1 EndHTML:-1 StartFragment:00000099 EndFragment:00016657 相信很多人在android 开发调试的时 ...

  10. 【Html】网页获取屏幕宽高

    <html> <script> function size(){ document.write( "屏幕分辨率为:"+screen.width+" ...