所使用到的工具:
- python编辑器(这里使用的是spyder)
- Qt designer
- cmd
一、 编写爬虫程序
-
导入所需要的包
#这里利用requests和bs4进行爬虫
import sys
import requests
from bs4 import BeautifulSoup
- 编写爬虫代码(示例:爬南昌天气)
url = 'https://www.tianqi.com/nanchang/'#所爬网站
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64) \
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36'}#模拟登陆
r = requests.get(url, headers = headers)
content = r.text
soup = BeautifulSoup(content, 'lxml')#以lxml显示
divs = soup.find_all(class_ = 'weather_info')#登陆网页查看源代码找寻所要爬的内容
for div in divs:
info=div.get_text()#获取父标签子标签所有内容
介于本文不是主要写python爬虫程序,我就只是简单注释了一下,以便以后查看。
二、利用QTdesigner设计想要的界面
python GUI工具有非常多,比如Tkinter
等,我采用上手非常快的QTdesigner
。
1.界面如下:
2.一般采用main windows
3.将左边item移到操作框中,在右边的属性操作框进行属性设置。
4.具体如何使用,可以自己试试,在文末我会提供一些浅显入门的文章。接下来就是将设计好的 ui文件
保存。
三、将爬虫程序与ui文件关联
- 导入所需要的包
#这里是使用ui文件所需的包
from PyQt5 import QtGui, QtPrintSupport , QtWidgets, QtCore,uic
- 加入调用代码
qtCreatorFile=r"uiFile_address" #uiFile_address:ui文件位置
Ui_MainWindow, QtBaseClass = uic.loadUiType(qtCreatorFile)
class MyApp(QtWidgets.QMainWindow, Ui_MainWindow):
def __init__(self):
QtWidgets.QMainWindow.__init__(self)
Ui_MainWindow.__init__(self)
self.setupUi(self)
self.weather.setText(info) //weather是ui文件里文本框的名字,调用这个文本框显示爬出来的内容
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
app.aboutToQuit.connect(app.deleteLater)
window = MyApp()
window.show()
sys.exit(app.exec_())
四、pyinstaller exe应用打包
win+R进入cmd-输入以下指令
pip install pyinstaller
pyinstaller.exe -i icon_address -w file_address
其中icon_address
为图标所在的目录,file_address
为程序所在目录
五、完整代码
# -*- coding: utf-8 -*-
"""
Created on Tue Nov 14 11:41:19 2017
@author: shawvey
"""
#这里利用requests和bs4进行爬虫
import sys
import requests
from bs4 import BeautifulSoup
#这里是使用ui文件所需的包
from PyQt5 import QtGui, QtPrintSupport , QtWidgets, QtCore,uic
url = 'https://www.tianqi.com/nanchang/'#所爬网站
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64) \
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36'}#模拟登陆
r = requests.get(url, headers = headers)
content = r.text
soup = BeautifulSoup(content, 'lxml')#以lxml显示
divs = soup.find_all(class_ = 'weather_info')#登陆网页查看源代码找寻所要爬的内容
for div in divs:
info=div.get_text()#获取父标签子标签所有内容
qtCreatorFile=r"D:\四年记\工作室\自己做的小东西\weather\weatherAngle.ui" #ui文件位置
Ui_MainWindow, QtBaseClass = uic.loadUiType(qtCreatorFile)
class MyApp(QtWidgets.QMainWindow, Ui_MainWindow):
def __init__(self):
QtWidgets.QMainWindow.__init__(self)
Ui_MainWindow.__init__(self)
self.setupUi(self)
self.weather.setText(info) //weather是ui文件里文本框的名字,这里调用这个文本框显示爬出来的内容
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
app.aboutToQuit.connect(app.deleteLater)
window = MyApp()
window.show()
sys.exit(app.exec_())