老司機飆車必備——妹子圖網爬蟲實戰
關注Python開發
前言
少年,聽到秋名山上轟鳴的發動機聲了嗎……
本節課將教你結
合PyQt和Python爬蟲,完成一個帶交互界面的妹子圖網站爬蟲。
本節課將
利用PyQt給妹子圖網的爬蟲做一個交互界面,從而對PyQt做界面有初步了解,學會如何生成圖片預覽、表單操作等。
課程分為三節,跟著做完後你將得到下面這個程序,整整齊齊的妹子圖片靜靜躺在這裡,不喜不悲。
一、課程介紹
1. 內容簡介
通過 PyQt 給妹子圖網的Python爬蟲做一個交互界面,從而對 PyQt 有初步的理解,並學會如何使用 Qt Creater 做界面以及實現基礎功能。課程分為三個部分:
了解如何將 Qt Creator 生成的界面導入的 Python 的環境中,並完成一個計算器Demo;
學會再實現 PyQt 中,完成圖片預覽以及元素列表兩個Demo;
完成妹子圖網爬蟲的交互界面。
2. 課程知識點
PyQt 相關知識
Python Qt 編程
3. 適合人群
本課程難度屬於一般,屬於初級級別課程,適合具有 Python 基礎的用戶,熟悉 Python 基礎知識加深鞏固。
4. 實驗環境
Xfce終端
Python 3.x.x
二、實驗目的
通過本次實驗,學會如何在 Ubuntu 系統配置Qt Creator,並了解生成的界面文件與 Python 間的交互模式。
三、開始實驗
3.1 環境配置
本實驗環境採用帶桌面的 Ubuntu Linux 環境,實驗中會用到的程序:
Qt Creator: 一個輕量級界面開發環境,其設計目標是設計目標是使開發人員能夠利用 Qt 這個應用程序框架更加快速及輕易的完成開發任務。
requests
:是用Python語言編寫,基於 urllib,採用 Apache2 Licensed 開源協議的 HTTP 庫
beautifulsoup
: 是一個可以從 HTML 或 XML 文件中提取數據的 Python 庫,它能夠通過你喜歡的轉換器實現慣用的文檔導航,查找,修改文檔的方式。(在第三節課完成爬蟲的項目時會用到)
進入系統後,如果 Linux 中默認的 python3 為 3.5 版本,可以通過以下指令切換到 3.4:
$ sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.4 70 --slave /usr/bin/python3m python3m /usr/bin/python3.4m
更新 apt-get 的鏈接:
$ sudo apt-get update
安裝 Qt Creater 以及 PyQt5 相關組件:
$ sudo apt-get install qtcreator pyqt5-dev-tools
安裝 beautifulsoup(bs4):
$ sudo apt-get install python3-bs4
安裝完成後,在 Xfce 終端中輸入 python3 或 python3.4 進入 Python3 的交互界面,並引入 PyQt5 、requests 以及 bs4 試試:
$ python3Python 3.4.3 (default, Oct 14 2015, 20:28:29)[GCC 4.8.8] on linuxType "help", "copyright", "credits" for "license">>>import requests>>>from bs4 import BeautifulSoup>>>from PyQt5 import QtCore, QtWidgets
此外,上述安裝完成之後,我們看到 ubuntu 界面裡面:應用程序 - 開發 — Qt Creator 也安裝好了:
3.2 Qt Creator第一次實踐——完成計算器Demo
我們打開 Qt Creator ,按照 File - New File or Project - Qt - Qt Designer Form - Main Window,然後更改文件名以及路徑,就可以看到新建的界面了(如果感覺界面太窄,可以通過命令 xrandr 命令來更改頁面解析度,具體可以看
這裡
)
現在需要完成加法器,實現兩個數字a和b的相加,數字a和b的通過數字輸入。拖拽元素將這個界面完成,效果如下圖。左邊有簡單的加法輸入以及輸出顯示框,點擊下面計算按鈕開始計算,右邊有一個輸出歷史計算的頁面。元素列表處可以看到各個拖拽元素的名稱以及對應的類,所有的這些元素都在MainWindow以及centralwidget上面
記住我們所設定元素的名稱都是:數字輸入分別為textEdit、textEdit_2、數字輸出為textEdit_3、計算記錄輸出為textBrowser以及計算按鈕為pushButton所對應的元素名稱。
保存後,會在工作目錄上出現一個以.ui後綴為名的文件,打開可以發現內部就是一個xml文件。現在我們需要通過 python 來對其中的元素進行關聯,從而實現最終的顯示、按鍵動作的實現。
import sysfrom PyQt5 import uic, QtWidgets(form_class, qtbase_class) = uic.loadUiType("mainwindow.ui")class MainWindow(form_class, qtbase_class): def __init__(self): super(MainWindow, self).__init__() self.setupUi(self) self.pushButton.clicked.connect(self.addfunction) def addfunction(self): a = float(self.textEdit.toPlainText()) b = float(self.textEdit_2.toPlainText()) c = a + b self.textEdit_3.setText(str(c)) self.textBrowser.append("%.2f + %.2f = %.2f" % (a, b, c))if __name__ == "__main__": app = QtWidgets.QApplication(sys.argv) ui = MainWindow() ui.show() sys.exit(app.exec_())
首先是一些包的載入,然後就是載入我們的 .ui 文件,通過 uic.lodUiType 函數可以輸出兩個類,一個是 form class,一個是 Qt base class。根據鏈接的說明文件,form class 僅是一個類,衍生自 Python object type,Qt base class是一個ui的框架類,這個框架就類似於 QDialog 、 QWidget 以及 QMainWindow 。(但是這兩個類的具體情況還是沒有弄清楚,例如:ui 的基本特徵是哪個 class 提供,通過 super 繼承是如何使這兩個類運行起來的,等等)。
後面的 MainWindow 的類就是我們用來實現界面中數字的輸入輸出、以及函數載入功能:
通過 toPlainText 可以獲得 textEdit 以及 textEdit_2 中輸入的數字數字,並在 addfunction 內完成加法運算,最後將結果輸出到 textEdit_3 裡面。通過 textBrowser.append 將 生成計算的算式顯示在 textBrowser 中。
最後的主函數為固定寫法,最終顯示的效果如附圖所示:
四、實驗總結
通過這一次實驗,相信大家對如何通過PyQt以及Python做一個交互界面,已經有一個初步的了解,這樣後面的課程就比較好開展了。
課後各位有興趣可以想想,如果再現在這個Demo的基礎上,再增加一個pushButton,完成減法運算。
答案可以看:
$wget http://labfile.oss.aliyuncs.com/courses/813/Demo2.py
做到這裡,課程的第一個章節結束,相信你已學到了PyQt的基本用法。
後面還有《
模塊化實踐——完成圖片預覽以及元素列表》《成品——完成爬蟲以及界面的結合》兩節,將帶你一步步完成一個有交互界面的妹子圖爬蟲程序。老司機一定打開電腦進入實驗樓,親手把這個項目敲出來呀!
推薦程序員必備微信號
▼
程序員大咖
微信號:CodePush
推薦理由:
為程序員提供最優質的博文、最精彩的討論、最實用的開發資源;提供最新最全的編程學習資料:PHP、Objective-C、Java、Swift、C/C++函數庫、.NET Framework類庫、J2SE API等等。並不定期奉送各種福利。
▼長按下方↓↓↓二維碼識別關注
TAG:Python開發 |
※男神必備飛機頭
※帥氣女孩,衣櫥必備機車皮外套
※弘安保羅機械甩棍體驗,夜間打車防身必備
※上海女子圖鑑,帶你玩轉職場必備「黑科技」!
※「摳圖教程」告別PS,小白必備手機摳圖神器
※野營必備手機充電鍋
※渣男必備手機軟體
※圍裙款式好看又實用 下廚必備的戰鬥盔甲
※奶油小姐姐必備——奶油杏子妝
※島國奇葩貨 單身女子必備「男友窗帘」
※四款汽車必備的車載好物,有了它們,入門車型也能實力秒殺頂配車
※電競必備利器 努比亞紅魔遊戲手機再開售
※奇葩二戰武器,機槍型攝像機,開槍攝像兩不誤,戰鬥機二戰必備!
※豬精女孩人手必備刷子
※蒸烤一體機,廚娘的必備神器!
※穿衣必備技能@小仙女
※老羅!鎚子T3網友都給你設計好了!鎚子手機,雷神必備!
※女生必備的基礎款鞋子
※信鴿肉鴿都必備的鴿子保健液
※《刺激戰場》吃雞必備槍械