使用 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 数据中提取其车站代码。此代码可用于各种应用程序,包括构建提供列车信息、预订车票或检查列车时刻表的应用程序。

更新于: 2023-07-18

210 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告