python爬取南京地铁
时间: 2023-06-28 12:10:13 浏览: 67
要爬取南京地铁的数据,你可以通过以下步骤来实现:
1. 首先,你需要了解南京地铁线路的信息,包括地铁线路的名称、编号、经过的站点等。你可以在南京地铁的官方网站或者其他相关网站上查找这些信息。
2. 接着,你需要使用 Python 中的 requests 库来发送 HTTP 请求,获取南京地铁线路的信息。你可以使用以下代码来发送 GET 请求:
```
import requests
response = requests.get('http://www.njmetro.com.cn/service.html')
print(response.text)
```
这段代码会发送一个 GET 请求到南京地铁的官方网站,获取网站的 HTML 内容。你可以通过解析 HTML 文档来获取地铁线路的信息。
3. 在获取了南京地铁线路的信息之后,你需要使用 Python 中的 BeautifulSoup 库来解析 HTML 文档。你可以使用以下代码来解析 HTML 文档:
```
from bs4 import BeautifulSoup
soup = BeautifulSoup(response.text, 'html.parser')
```
这段代码会将 HTML 文档转换成一个 BeautifulSoup 对象,你可以使用这个对象来获取 HTML 文档中的各种元素。
4. 接下来,你需要使用 BeautifulSoup 对象来获取地铁线路的信息。你可以使用以下代码来获取南京地铁 1 号线的站点信息:
```
line1 = soup.find_all('div', {'class': 'line-box'})[0]
stations = line1.find_all('a')
for station in stations:
print(station.text)
```
这段代码会从 HTML 文档中获取南京地铁 1 号线的站点信息,并打印出所有站点的名称。
5. 最后,你可以将获取到的地铁线路信息保存到一个文件中,方便之后的使用。你可以使用以下代码来将信息保存到一个 CSV 文件中:
```
import csv
with open('subway.csv', 'w', newline='') as csvfile:
writer = csv.writer(csvfile)
writer.writerow(['Line', 'Station'])
for i in range(1, 11):
line = soup.find_all('div', {'class': 'line-box'})[i-1]
stations = line.find_all('a')
for station in stations:
writer.writerow([f'Line {i}', station.text])
```
这段代码会将南京地铁的所有线路和站点信息保存到一个名为 subway.csv 的 CSV 文件中。