代碼如下:
#!/usr/bin/python
# -*- coding:utf-8 -*-
'''os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8'
user_agent = "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0"
headers = {'User-Agent': user_agent}
start_urls = 'http://tieba.baidu.com/f/search/res?ie=utf-8'
kw = 'eng'
url = start_urls + kw
request=urllib.request.Request(url,headers=headers)
reponse=urllib.request.urlopen(request).read()
print(reponse)
'''
#!/usr/bin/env python
# -*- coding :gb2312 -*-
import urllib.request
import urllib.parse
import sys
from urllib.request import urlopen
from bs4 import BeautifulSoup
import time
import tiebaUI
class TieBa():
def __init__(self):
app = tiebaUI.QtWidgets.QApplication(sys.argv)
MainWindow = tiebaUI.QtWidgets.QMainWindow()
MainWindow.show()
self.ui = tiebaUI.Ui_MainWindow()
self.ui.setupUi(MainWindow)
self.ui.pushButton.clicked.connect(TieBa.start)
self.kw = "222"
self.kw2 = "333"
self.beginPage = endPage = 0
self.kw_url = "http://tieba.baidu.com/f?"
self.kw2_url = "http://tieba.baidu.com"
self.ui.textEdit.setText('不需要帶“吧”字')
sys.exit(app.exec_())
def writeAl(self,all_nr_print):
# now = time.strftime("%Y%m%d%H%M%S", time.localtime(time.time()))
# now = time.strftime("%Y%m%d%H", time.localtime(time.time()))
# fname = (kw + "吧_" + kw2 + now + r".txt")
'''
fname = (self.kw + "吧_P" + str(self.beginPage) + "-P" + str(self.endPage) + "_" + self.kw2 + r".txt")
with open(fname, 'a') as f:
f.write(all_nr_print+"\n")
'''
def all_nr(self,full_url):
html = urlopen(full_url)
bsObj = BeautifulSoup(html, 'html.parser')
t1 = bsObj.find_all('a')
for t2 in t1:
t3 = str(t2.get('href'))
t31 = str(t2.get('title'))
if len(t3) == 13:
if self.kw2 in t31:
all_nr_print = t31 + " " + str(self.kw2_url) + str(t3)
print(all_nr_print)
self.writeAl(all_nr_print)
def tiebaSpider(self,kw_url, beginPage, endPage):
for page in range(beginPage, endPage + 1):
pn = (page - 1) * 50
full_url = kw_url + "&pn=" + str(pn)
#print("\n%s"% full_url)
self.all_nr(full_url)
# writeAl(full_url)
def start(self):
print('111')
self.kw = '222'
print(self.kw)
問題在這里,點擊按鈕之后能正常輸出111,但是后面就自動退出了,這個令self.kw = 222也是用來測驗的,其實是如下被注釋的代碼,想獲取文本框內容然后賦值給kw。但是臣妾做不到啊,求大佬指教一下,自己真的解決不來了,只能來發帖了.....
# self.kw2 = ui.textEdit.toPlainText()
# self.beginPage = ui.textEdit_3.toPlainText()
# self.endPage = ui.textEdit_4.toPlainText()
# print('222')
# kw_key = urllib.parse.urlencode({"kw": self.kw})
# full_url = self.kw_url + kw_key
# self.tiebaSpider(full_url, self.beginPage, self.endPage)
#print(self.kw,self.kw2,self.beginPage,self.endPage)
'''
kw = input('請輸入貼吧名:')
beginPage = int(input("請輸入起始頁:"))
endPage = int(input("請輸入結束頁:"))
kw2 = input('請輸入帖子主題的\"關鍵詞\":')
kw_url = "http://tieba.baidu.com/f?"
kw2_url = "http://tieba.baidu.com"
kw_key = urllib.parse.urlencode({"kw": kw})
full_url = kw_url + kw_key
tiebaSpider(full_url, beginPage, endPage)
'''
if __name__ == '__main__':
TieBa()
剛開始學pyqt5做爬蟲界面,可能有些代碼寫的很奇怪,主要是一直在該描述的錯誤,到后面改得很亂了。另外我是參考的ui檔案,然后邏輯是在上面這個py檔案里面實作的,沒有問題吧。
ui.py的代碼如下:
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'tiebaUI.ui'
#
# Created by: PyQt5 UI code generator 5.11.3
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QHeaderView
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(1000, 450)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(MainWindow.sizePolicy().hasHeightForWidth())
MainWindow.setSizePolicy(sizePolicy)
MainWindow.setMinimumSize(QtCore.QSize(1000, 450))
MainWindow.setMaximumSize(QtCore.QSize(1000, 450))
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.label = QtWidgets.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(10, 10, 81, 31))
self.label.setTextFormat(QtCore.Qt.AutoText)
self.label.setAlignment(QtCore.Qt.AlignCenter)
self.label.setObjectName("label")
self.textEdit = QtWidgets.QTextEdit(self.centralwidget)
self.textEdit.setGeometry(QtCore.QRect(100, 10, 150, 31))
self.textEdit.setObjectName("textEdit")
self.label_2 = QtWidgets.QLabel(self.centralwidget)
self.label_2.setGeometry(QtCore.QRect(280, 10, 81, 31))
self.label_2.setTextFormat(QtCore.Qt.AutoText)
self.label_2.setAlignment(QtCore.Qt.AlignCenter)
self.label_2.setObjectName("label_2")
self.textEdit_2 = QtWidgets.QTextEdit(self.centralwidget)
self.textEdit_2.setGeometry(QtCore.QRect(370, 10, 150, 31))
self.textEdit_2.setObjectName("textEdit_2")
self.label_3 = QtWidgets.QLabel(self.centralwidget)
self.label_3.setGeometry(QtCore.QRect(580, 10, 81, 31))
self.label_3.setTextFormat(QtCore.Qt.AutoText)
self.label_3.setAlignment(QtCore.Qt.AlignCenter)
self.label_3.setObjectName("label_3")
self.textEdit_3 = QtWidgets.QTextEdit(self.centralwidget)
self.textEdit_3.setGeometry(QtCore.QRect(670, 10, 71, 31))
self.textEdit_3.setObjectName("textEdit_3")
self.textEdit_4 = QtWidgets.QTextEdit(self.centralwidget)
self.textEdit_4.setGeometry(QtCore.QRect(860, 10, 71, 31))
self.textEdit_4.setObjectName("textEdit_4")
self.label_4 = QtWidgets.QLabel(self.centralwidget)
self.label_4.setGeometry(QtCore.QRect(770, 10, 81, 31))
self.label_4.setTextFormat(QtCore.Qt.AutoText)
self.label_4.setAlignment(QtCore.Qt.AlignCenter)
self.label_4.setObjectName("label_4")
self.tableWidget = QtWidgets.QTableWidget(self.centralwidget)
self.tableWidget.setGeometry(QtCore.QRect(10, 140, 981, 271))
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.tableWidget.sizePolicy().hasHeightForWidth())
self.tableWidget.setSizePolicy(sizePolicy)
self.tableWidget.setMidLineWidth(1)
self.tableWidget.setSizeAdjustPolicy(QtWidgets.QAbstractScrollArea.AdjustToContents)
self.tableWidget.setAutoScroll(True)
self.tableWidget.setTabKeyNavigation(True)
self.tableWidget.setVerticalScrollMode(QtWidgets.QAbstractItemView.ScrollPerItem)
self.tableWidget.setColumnCount(3)
self.tableWidget.setObjectName("tableWidget")
self.tableWidget.setRowCount(0)
self.tableWidget.horizontalHeader().setSectionResizeMode(QHeaderView.Interactive)
item = QtWidgets.QTableWidgetItem()
item.setTextAlignment(QtCore.Qt.AlignCenter)
self.tableWidget.setHorizontalHeaderItem(0, item)
self.pushButton = QtWidgets.QPushButton(self.centralwidget)
self.pushButton.setGeometry(QtCore.QRect(860, 70, 121, 61))
self.pushButton.setObjectName("pushButton")
self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdit.setGeometry(QtCore.QRect(320, 80, 521, 41))
self.lineEdit.setObjectName("lineEdit")
self.label_5 = QtWidgets.QLabel(self.centralwidget)
self.label_5.setGeometry(QtCore.QRect(240, 80, 71, 41))
self.label_5.setObjectName("label_5")
self.label_6 = QtWidgets.QLabel(self.centralwidget)
self.label_6.setGeometry(QtCore.QRect(20, 70, 141, 21))
self.label_6.setObjectName("label_6")
self.label_7 = QtWidgets.QLabel(self.centralwidget)
self.label_7.setGeometry(QtCore.QRect(20, 100, 141, 21))
self.label_7.setObjectName("label_7")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 1000, 26))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "貼吧關鍵詞帖子篩選工具"))
self.label.setText(_translate("MainWindow", "吧名:"))
self.label_2.setText(_translate("MainWindow", "關鍵字:"))
self.label_3.setText(_translate("MainWindow", "起始頁:"))
self.label_4.setText(_translate("MainWindow", "結束頁:"))
self.tableWidget.setHorizontalHeaderLabels(['貼名','地址','時間'])
self.pushButton.setText(_translate("MainWindow", "開始"))
self.label_5.setText(_translate("MainWindow", "當前狀態:"))
self.label_6.setText(_translate("MainWindow", "作者:KONMIN"))
self.label_7.setText(_translate("MainWindow", "版本:v0.0.1"))
uj5u.com熱心網友回復:

剛開始學pyqt5,做第一個爬蟲界面....求指導哇~~~能這么參考ui.py然后實作邏輯的吧?
uj5u.com熱心網友回復:
樓主問題解決了嗎,我也遇到過了,PyQt5點擊事件按鈕一會沒有反應就自動結束了,也不報錯。后來找了好久才發現一個單詞拼錯了。
不知道什么原因,求大神支招
uj5u.com熱心網友回復:
遇到完全一樣的問題了,網上真沒有這個案例,同樣的參考UI檔案,同樣的內置信號,自定義槽函式,同樣的想在槽函式里干點自定義的事,同樣的點擊按鈕就自動結束程式了,同樣的沒有任何錯誤提示。 求解。uj5u.com熱心網友回復:
同樣問題暴風哭泣uj5u.com熱心網友回復:
TieBa類中的 self.ui.pushButton.clicked.connect(TieBa.start)應該是self.ui.pushButton.clicked.connect(self.start)吧轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/23092.html
上一篇:pcl 如何交線檢測
下一篇:報錯:json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
