使用 Python 获取印度铁路车站代码
网络爬虫只是灵活的编程语言 Python 的众多用途之一。在这篇博文中,我们将了解如何使用 Python 提取印度铁路的车站代码。每个印度铁路车站都有一个唯一的识别号,即车站代码。它们用于预订车票、查看列车时刻表和查找其他相关数据。
安装
首先,我们需要安装 requests 和 Beautiful Soup 库。Requests 是一个用于发送 HTTP 请求的 Python 库,而 Beautiful Soup 是一个用于网络爬虫的库。
要安装 requests,请打开您的终端并输入 -
pip install requests pip install beautifulsoup4
算法
定义一个名为 get_html 的函数,该函数以 URL 作为输入。
在函数内部,创建一个包含用户代理、接受和接受语言值的标头字典。
使用 requests.get 方法使用标头字典向 URL 发出 GET 请求,并将响应存储在名为 response 的变量中。
从函数返回响应文本。
定义一个名为 get_station_code 的函数,该函数以车站名称作为输入。
通过将车站名称连接到基本 URL 来构建车站页面的 URL。
使用构建的 URL 调用 get_html 函数以检索页面的 HTML 数据,并将结果存储在名为 html_data 的变量中。
使用 BeautifulSoup 库解析 HTML 数据,并将结果存储在名为 soup 的变量中。
使用 soup 对象的 find 方法查找具有类 extrtable 的 table 元素,该元素包含车站代码。
使用 soup 对象的 find_all 方法查找 table 元素内的所有 b 元素。
使用 -1 索引检索 b 元素列表中的最后一个元素,并使用 get_text 方法获取其文本值。
从函数返回车站代码。
使用车站名称作为输入调用 get_station_code 函数以检索车站代码。
将车站代码打印到控制台。
示例
import requests from bs4 import BeautifulSoup # function to get html data from a url def get_html(url): headers = { 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) ', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Accept-Language': 'en-US,en;q=0.5', } response = requests.get(url, headers=headers) return response.text # main function to get station code from mapsofindia.com def get_station_code(station_name): # construct url for the station page url = f"https://www.mapsofindia.com/railways/station-code/{station_name}.html" # get html data for the station page html_data = get_html(url) # parse html data using BeautifulSoup soup = BeautifulSoup(html_data, 'html.parser') # extract station code from html data station_code = soup.find("table", class_="extrtable").find_all('b')[-1].get_text() # return station code return station_code # example usage station_name = "pune-junction" station_code = get_station_code(station_name) print(f"Station Code for {station_name.title()} is {station_code}") station_name = "new-delhi" station_code = get_station_code(station_name) print(f"Station Code for {station_name.title()} is {station_code}")
输出
Station Code for Pune-Junction is PUNE Station Code for New-Delhi is NDLS
解释
此 Python 脚本用于使用网络爬虫获取给定车站名称的印度铁路车站代码。
脚本首先导入必要的模块 - requests 和来自 bs4 的 BeautifulSoup。requests 模块用于发送 HTTP 请求,而 BeautifulSoup 用于解析 HTML 数据。
然后定义方法 get_html(),它以 URL 作为输入并返回页面的 HTML 信息,该信息使用 requests 模块向提供的 URL 发送 HTTP GET 请求,然后将页面的 HTML 信息作为文本字符串返回。主要方法 get_station_code() 在接收车站名称作为输入后返回车站代码。车站名称首先用于创建车站页面的 URL。然后,使用此 URL 作为参数使用 get_html() 方法获取页面的 HTML 信息。
然后使用 BeautifulSoup 解析 HTML 数据。通过将 HTML 数据和 html.parser 传递给 BeautifulSoup 类构造函数来创建 soup 对象。然后,通过搜索具有类“extrtable”的 <table> 元素来从解析的 HTML 数据中提取车站代码。此表包含所有车站信息,包括车站代码,车站代码由表中的最后一个 <b> 标记标识。.get_text() 方法用于获取此标记的文本内容,即车站代码。
最后,get_station_code() 函数返回车站代码,然后使用 f 字符串与车站名称一起打印。
应用
说明性示例有可能扩展到用于各种应用程序中,包括开发使购买车票更简单、提供列车信息或允许用户查看时刻表的软件。考虑开发一个预订火车票的应用程序,用户可以在其中输入代码以获取特定车站的车站代码,然后再获取正确的车票。
结论
Python 是一种功能强大的语言,可用于各种用途,包括网络爬虫。在本博文中,我们学习了如何使用 Python 提取印度铁路车站代码。我们分别使用 requests 和 BeautifulSoup 库发送 HTTP 请求和解析 HTML 数据。我们还学习了如何为特定车站构建 URL 并从 HTML 数据中提取其车站代码。此代码可用于各种应用程序,包括构建提供列车信息、预订车票或检查列车时刻表的应用程序。