当然可以,以下是一个简单的Python GUI程序,使用了PyQt库来实现:```import sysfrom PyQt5.QtWidgets import QApplication, QWidget, QLabel, QLineEdit, QPushButton, QTextBrowserfrom bs4 import BeautifulSoupimport requestsclass NovelDownloader(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): self.resize(500, 500) self.setWindowTitle(\'小说下载器\') self.label = QLabel(\'请输入小说主页链接:\', self) self.label.move(20, 20) self.edit = QLineEdit(self) self.edit.setGeometry(20, 50, 200, 25) self.btn = QPushButton(\'搜索\', self) self.btn.setGeometry(240, 50, 80, 25) self.btn.clicked.connect(self.search_novel) self.list = QTextBrowser(self) self.list.setGeometry(20, 90, 460, 380) def search_novel(self): url = self.edit.text() headers = { \'User-Agent\': \'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3\'} res = requests.get(url, headers=headers) soup = BeautifulSoup(res.content, \'html.parser\') novel_list = soup.find_all(\'div\', {\'class\': \'novelslist\'}) novels = [] for novel in novel_list: title = novel.find(\'li\').text download_url = novel.find(\'a\')[\'href\'] novels.append((title, download_url)) self.list.clear() for novel in novels: self.list.append(novel[0] + \': \' + novel[1])if __name__ == \'__main__\': app = QApplication(sys.argv) nd = NovelDownloader() nd.show() sys.exit(app.exec_())```在上述代码中,我们先定义了一个NovelDownloader类继承自QWidget,然后在类的构造函数中初始化UI。在UI中,我们添加了一个QLabel作为提示文字,一个QLineEdit作为输入框,一个QPushButton作为按钮,一个QTextBrowser作为列表框。其中,我们通过btn.clicked.connect(self.search_novel)将search_novel函数与按钮的点击事件关联在一起。search_novel函数中,我们使用requests库发送HTTP请求获取网页内容,然后使用BeautifulSoup库解析网页,提取小说名称和下载地址,并将结果显示在列表框中。最后,我们通过if __name__ == \'__main__\'创建一个应用程序对象并运行。 |