python3 爬蟲實戰:為爬蟲新增 GUI 影象介面
From:https://blog.csdn.net/Fan_shui/article/details/81611752
一、前言
前面我們寫的爬蟲只能執行在具有python環境的電腦上,若是把原始碼發給別人,很大可能性是執行不了的,所以我們本節的目的是為爬蟲建立 GUI 介面,並打包成exe可執行檔案。
知乎:https://zhuanlan.zhihu.com/p/41866570
二、學習知識點
tkinter:tkinter 是 python 內建的模組,不用安裝,可直接匯入
tkinter的學習是參考b站的一個 python gui 介面設計的視訊 Python 教程:https://www.bilibili.com/video/av26214247?from=search&seid=10819799360989272623
Python GUI 程式設計(Tkinter) | 菜鳥教程:http://www.runoob.com/python/python-gui-tkinter.html
三、圖形介面
示例程式:
from tkinter import *
def main():
#建立空白視窗,作為主載體
root = Tk()
root.title('python')
#顯示視窗
mainloop()
main()
執行後產生下圖:
接下來設定視窗大小:root.geometry('600x300+398+279')
這個418x200可以通過qq的截圖工具得到,截圖的時候會有個資料一直在動,就是距離螢幕左上角的距離,後面的+398+279是顯示的是視窗在整個螢幕的位置
然後我們新增標籤控制元件
#標籤控制元件,視窗中放置文字元件
Label(root,text='請輸入下載的url:',font=("華文行楷",15),fg='black').grid()
控制元件的第一個引數基本都是我們的主載體,因為標籤是包含在我們的父載體下的。後面的grid是定位,定位有三種,grid,place,pack,其中grid是網格式的定位,如下圖:
圖中的(0,0)表示0行h0列,(0,1)表示0行第二列。網格式定位的意思是說那些框架是按照圖中的表格放置的,上面程式碼中grid中沒有傳入引數,預設為(0,0),即放在0行0列,效果如下圖
接下來我們放個輸入url的輸入框
#Entry是可輸入文字框
url_input=Entry(root,font=("微軟雅黑",15),width=50)
url_input.grid(row=0,column=1)
grid這次定位在0行1列,與上一個標籤控制元件在同一行。
下面我們增加個顯示輸出的控制元件,我們採用列表控制元件
#列表控制元件
text=Listbox(root,font=('微軟雅黑',15),width=45,height=10)
#columnspan 元件所跨越的列數
text.grid(row=1,columnspan=2)
columnspan表示合併兩個列
下面我們再新增兩個按鈕
設定按鈕 sticky對齊方式,N S W E
button = Button(root,text='開始下載',font=("微軟雅黑",15),command=Crawl_content).grid(row=2,column=0,sticky=W)
button = Button(root,text='退出',font=("微軟雅黑",15),command=root.quit).grid(row=2,column=1,sticky=E)
其中第一個按鈕中新增了command,點選這個按鈕時,就會呼叫Crawl_content這個函式(現在還沒有寫這個函式,先去掉),後面的grid中新增了sticky=W,sitcky是對齊方式,第二個botton主要是退出GUI介面
from tkinter import *
def main():
global url_input, text
# 建立空白視窗,作為主載體
root = Tk()
root.title('測試——貓眼電影')
# 視窗的大小,後面的加號是視窗在整個螢幕的位置
root.geometry('550x400+398+279')
# 標籤控制元件,視窗中放置文字元件
Label(root, text='請輸入下載的url:', font=("華文行楷", 20), fg='black').grid()
# 定位 pack包 place位置 grid是網格式的佈局 #Entry是可輸入文字框
url_input = Entry(root, font=("微軟雅黑", 15))
url_input.grid(row=0, column=1)
# 列表控制元件
text = Listbox(root, font=('微軟雅黑', 15), width=45, height=10)
# columnspan 元件所跨越的列數
text.grid(row=1, columnspan=2)
# 設定按鈕 sticky對齊方式,N S W E
button = Button(root, text='開始下載', font=("微軟雅黑", 15)).grid(row=2, column=0, sticky=W)
button = Button(root, text='退出', font=("微軟雅黑", 15), command=root.quit).grid(row=2, column=1, sticky=E)
# 使得視窗一直存在
mainloop()
main()
現在介面已經做好了,本節主要是介紹介面設計,爬蟲的內容具體不再介紹,是個非常簡單的小爬蟲
from tkinter import *
import requests
import os
from bs4 import BeautifulSoup
from pyquery import PyQuery as pq
import csv
os.chdir('E:\爬蟲資料')
def crawl_content():
url = url_input.get()
headers = {'user-agent': 'user-agent'}
file = csv.writer(open('貓眼電影.csv', 'w'))
for i in range(0, 100, 10):
new_url = url + '?offset=%d' % i
print('在解析網址中:', new_url)
req = requests.get(url=new_url, headers=headers)
html = req.text
doc = pq(html)
items = doc('dl.board-wrapper dd').items()
for each in items:
title = each.find('a').text()
# 新增資料
text.insert(END, title)
# 文字框向下滾動
text.see(END)
# 更新
text.update()
print('已抓取完畢')
def main():
global url_input, text
# 建立空白視窗,作為主載體
root = Tk()
root.title('測試——貓眼電影')
# 視窗的大小,後面的加號是視窗在整個螢幕的位置
root.geometry('550x400+398+279')
# 標籤控制元件,視窗中放置文字元件
Label(root, text='請輸入下載的url:', font=("華文行楷", 20), fg='black').grid()
# 定位 pack包 place位置 grid是網格式的佈局 #Entry是可輸入文字框
url_input = Entry(root, font=("微軟雅黑", 15))
url_input.grid(row=0, column=1)
Label(root, text='貓眼電影url: http://maoyan.com/board/4', font=("微軟雅黑", 10), fg='black').grid(row=1)
# 列表控制元件
text = Listbox(root, font=('微軟雅黑', 15), width=45, height=10)
# columnspan 元件所跨越的列數
text.grid(row=2, columnspan=2)
# 設定按鈕 sticky對齊方式,N S W E
button = Button(root, text='開始下載', font=("微軟雅黑", 15), command=crawl_content).grid(row=3, column=0, sticky=W)
button = Button(root, text='退出', font=("微軟雅黑", 15), command=root.quit).grid(row=3, column=1, sticky=E)
# 使得視窗一直存在
mainloop()
main()
# http://maoyan.com/board/4
url_input把它設定為全域性變數,在爬蟲抓取的時候可以通過get()獲得我們輸入的url,同樣為了讓抓取的內容顯示在我們的列表控制元件中,我們需要把text這個列表控制元件也設定為全域性變數,然後在爬蟲中用text.insert()插入資料。
差點忘了打包了,需要用到pyinstaller,沒有安裝的話就 :pip install pyinstaller
然後cmd到需要打包的py檔案的所在地,直接pyinstaller test.py會生成兩個資料夾,dist資料夾下面有個exe執行檔案,可以傳送給別的電腦了。
相關文章
- python3網路爬蟲開發實戰_Python3 爬蟲實戰Python爬蟲
- Python3 大型網路爬蟲實戰 — 給 scrapy 爬蟲專案設定為防反爬Python爬蟲
- 《Python3網路爬蟲開發實戰》教程||爬蟲教程Python爬蟲
- 網路爬蟲——爬蟲實戰(一)爬蟲
- [Python3網路爬蟲開發實戰] 分散式爬蟲原理Python爬蟲分散式
- 爬蟲實戰爬蟲
- Python3爬蟲實戰(requests模組)Python爬蟲
- 爬蟲實戰scrapy爬蟲
- Python3爬蟲實戰(urllib模組)Python爬蟲
- Java 爬蟲專案實戰之爬蟲簡介Java爬蟲
- python爬蟲實戰,爬蟲之路,永無止境Python爬蟲
- 圖靈樣書爬蟲 - Python 爬蟲實戰圖靈爬蟲Python
- 【Python學習】爬蟲爬蟲爬蟲爬蟲~Python爬蟲
- Python 爬蟲實戰(2):股票資料定向爬蟲Python爬蟲
- API商品資料介面呼叫爬蟲實戰API爬蟲
- 2個月精通Python爬蟲——3大爬蟲框架+6場實戰+反爬蟲技巧+分散式爬蟲Python爬蟲框架分散式
- Python3網路爬蟲開發實戰Python爬蟲
- Puppeteer爬蟲實戰(三)爬蟲
- 爬蟲技術實戰爬蟲
- Python 爬蟲實戰Python爬蟲
- 爬蟲利器 Puppeteer 實戰爬蟲
- 爬蟲實戰:探索XPath爬蟲技巧之熱榜新聞爬蟲
- python3網路爬蟲開發實戰_Python 3開發網路爬蟲(一)Python爬蟲
- python3網路爬蟲開發實戰pdfPython爬蟲
- Java爬蟲實戰:API商品資料介面呼叫Java爬蟲API
- 爬蟲專案實戰(一)爬蟲
- 爬蟲實戰專案集合爬蟲
- 爬蟲實戰專案合集爬蟲
- 爬蟲——三個小實戰爬蟲
- 爬蟲——實戰完整版爬蟲
- 網路爬蟲(六):實戰爬蟲
- 基礎爬蟲案例實戰爬蟲
- 讀書筆記:《Python3網路爬蟲開發實戰》——第2章:爬蟲基礎筆記Python爬蟲
- 我的爬蟲入門書 —— 《Python3網路爬蟲開發實戰(第二版)》爬蟲Python
- 【Python爬蟲9】Python網路爬蟲例項實戰Python爬蟲
- 爬蟲:多程式爬蟲爬蟲
- python爬蟲實戰教程-Python爬蟲開發實戰教程(微課版)Python爬蟲
- Python3網路爬蟲快速入門實戰解析Python爬蟲