使用 urllib 爬取北京公交车站和使用 beautifulsoup 解析,将结果存储进 csv 文件和数据库
时间: 2024-10-08 20:01:28 浏览: 175
使用Python的`urllib`库主要是用于从URL获取网页内容,而BeautifulSoup是一个强大的HTML解析库,可以帮助我们从抓取的页面中提取数据。如果你想爬取北京公交站的信息并将其保存到CSV文件和数据库,可以按照以下步骤操作:
1. **获取网页内容**:
- 首先,你需要找到提供公交站信息的网站,并确定其API还是HTML结构。如果没有直接的数据源,通常需要发送HTTP请求来获取HTML。
```python
import requests
url = "https://example.com/bj_bus_stations" # 假设这是实际网址
response = requests.get(url)
html_content = response.text
```
2. **使用BeautifulSoup解析**:
- 导入BeautifulSoup库,并创建一个解析器来处理HTML内容。
```python
from bs4 import BeautifulSoup
soup = BeautifulSoup(html_content, 'html.parser')
bus_stations = soup.find_all('div', class_='bus_station') # 示例标签,替换为实际找到的元素
```
3. **提取数据**:
- 遍历`bus_stations`并从中提取出公交站名、路线等信息。假设每个公交站信息在某个特定的`<span>`或`<p>`标签内。
```python
data = []
for station in bus_stations:
name = station.find('span', class_='name').text
routes = [route.text for route in station.find_all('li', class_='route')]
data.append((name, routes))
```
4. **存储数据**:
- 将数据写入CSV文件:
```python
import csv
with open('bus_stations.csv', 'w', newline='') as file:
writer = csv.writer(file)
writer.writerow(['名称', '路线'])
writer.writerows(data)
```
- 如果你想将数据存储到数据库,比如SQLite,可以安装`sqlite3`库,然后创建连接,执行SQL插入操作:
```python
import sqlite3
conn = sqlite3.connect('bus_stations.db')
c = conn.cursor()
c.execute('''CREATE TABLE IF NOT EXISTS stations (name TEXT, routes TEXT)''')
for station in data:
c.execute("INSERT INTO stations VALUES (?, ?)", station)
conn.commit()
conn.close()
```
记得根据实际情况调整代码中的标签选择器(class_、tag名等),以及URL和数据结构。
阅读全文