PyQt5爬取12306车票信息程序的实现
本文将详细讲解如何使用PyQt5和Python爬取12306车票信息。我们将从环境配置开始,一步步地介绍如何使用PyQt5和Python实现爬取12306车票信息的程序。
环境配置
在使用PyQt5和Python爬取12306车票信息之前,我们需要先进行环境配置。以下是环境配置的步骤:
- 安装Python
可以在Python官网下载Python的安装包,并按照提示进行安装。
- 安装PyQt5
可以使用pip命令来安装PyQt5:
pip install PyQt5
- 安装requests和BeautifulSoup
可以使用pip命令来安装requests和BeautifulSoup:
pip install requests
pip install beautifulsoup4
程序实现
在环境配置完成之后,我们可以使用PyQt5和Python实现爬取12306车票信息的程序。以下是程序实现的步骤:
- 导入模块
import sys
import requests
from bs4 import BeautifulSoup
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QLineEdit, QPushButton, QVBoxLayout
在上面的示例中,我们导入了sys、requests、BeautifulSoup和PyQt5.QtWidgets等模块。
- 创建窗口
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('12306车票信息查询')
self.setGeometry(100, 100, 400, 200)
self.label = QLabel('请输入车次:')
self.lineedit = QLineEdit()
self.button = QPushButton('查询')
self.button.clicked.connect(self.search)
vbox = QVBoxLayout()
vbox.addWidget(self.label)
vbox.addWidget(self.lineedit)
vbox.addWidget(self.button)
self.setLayout(vbox)
在上面的示例中,我们创建了一个名为“MainWindow”的窗口,并添加了一个标签、一个文本框和一个按钮。
- 实现查询功能
def search(self):
train_no = self.lineedit.text()
url = 'https://search.12306.cn/search/v1/train/search?keyword=' + train_no
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
result = soup.find_all('div', {'class': 'search-item'})
for item in result:
print(item.text)
在上面的示例中,我们实现了查询功能。当用户点击查询按钮时,程序将获取用户输入的车次号,并使用requests库向12306网站发送请求。接着,我们使用BeautifulSoup库解析HTML代码,并提取车票信息。最后,我们将车票信息输出到控制台。
- 运行程序
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
在上面的示例中,我们使用QApplication类创建了一个应用程序,并将窗口显示出来。最后,我们使用sys.exit方法退出应用程序。
示例
以下是一个完整的示例,演示如何使用PyQt5和Python爬取12306车票信息:
import sys
import requests
from bs4 import BeautifulSoup
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QLineEdit, QPushButton, QVBoxLayout
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('12306车票信息查询')
self.setGeometry(100, 100, 400, 200)
self.label = QLabel('请输入车次:')
self.lineedit = QLineEdit()
self.button = QPushButton('查询')
self.button.clicked.connect(self.search)
vbox = QVBoxLayout()
vbox.addWidget(self.label)
vbox.addWidget(self.lineedit)
vbox.addWidget(self.button)
self.setLayout(vbox)
def search(self):
train_no = self.lineedit.text()
url = 'https://search.12306.cn/search/v1/train/search?keyword=' + train_no
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
result = soup.find_all('div', {'class': 'search-item'})
for item in result:
print(item.text)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
在上面的示例中,我们创建了一个名为“MainWindow”的窗口,并添加了一个标签、一个文本框和一个按钮。当用户输入车次号并点击查询按钮时,程序将获取车票信息并输出到控制台。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PyQt5爬取12306车票信息程序的实现 - Python技术站