You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

新泽西州政府加油站页面爬虫:现有代码后的下一步操作咨询

如何从新泽西州加油站页面提取正确数据?

嘿,看起来你已经迈出了爬取这个加油站页面的第一步,但目前的代码只是把所有<p>标签都打印出来,这里面肯定混了很多无关内容(比如页面的说明文字、版权信息啥的)。咱们一步步来调整,把有用的加油站数据提取出来:

第一步:先搞清楚页面的HTML结构

首先打开浏览器的开发者工具(按F12),定位到一个加油站的信息块,看看这些数据是怎么被组织的:

  • 是不是所有加油站信息都放在一个带有特定类名的容器里?比如可能是<div class="fuel-location">或者类似的标签
  • 每个加油站的名称、地址、电话这些字段,是不是对应特定的<p>标签,或者有明确的文本标识(比如“Station Name:”、“Address:”)

第二步:筛选出仅包含加油站信息的元素

比如如果页面里每个加油站都在一个class="location-entry"的<div>里,那咱们先把这些容器找出来,而不是直接遍历所有<p>:

import requests
from bs4 import BeautifulSoup

page = requests.get("http://www.nj.gov/treasury/administration/statewide-support/motor-fuel-locations.shtml")
soup = BeautifulSoup(page.content, 'html.parser')

# 先定位所有加油站的容器(这里的class名需要你根据实际页面调整)
station_containers = soup.find_all('div', class_='location-entry')

第三步:从容器里提取结构化数据

接下来,在每个容器里提取具体的字段。假设每个容器里的<p>标签分别对应名称、地址、电话,或者带有明确的前缀,咱们可以这样处理:

station_list = []

for container in station_containers:
    station_data = {}
    # 遍历容器内的所有p标签
    for p_tag in container.find_all('p'):
        text = p_tag.get_text(strip=True)
        # 根据文本前缀拆分字段
        if text.startswith("Station Name:"):
            station_data['name'] = text.replace("Station Name:", "").strip()
        elif text.startswith("Address:"):
            station_data['address'] = text.replace("Address:", "").strip()
        elif text.startswith("Phone:"):
            station_data['phone'] = text.replace("Phone:", "").strip()
    # 把整理好的字典加入列表
    if station_data:
        station_list.append(station_data)

# 打印第一个加油站的信息看看效果
print(station_list[0])

第四步:清理数据并存储

如果提取到的文本有多余的换行、空格,或者需要拆分更细的信息(比如地址里的城市、邮编),可以用字符串处理或者正则表达式来优化。最后把数据保存成CSV或JSON文件,方便后续使用:

# 保存为CSV文件
import csv

with open('nj_gas_stations.csv', 'w', newline='', encoding='utf-8') as csv_file:
    # 定义表头
    fieldnames = ['name', 'address', 'phone']
    writer = csv.DictWriter(csv_file, fieldnames=fieldnames)
    writer.writeheader()
    writer.writerows(station_list)

关键提示

一定要根据实际页面的HTML结构来调整选择器(比如容器的class名、字段的前缀文本),因为网页可能会更新,手动检查几个加油站的代码结构是最稳妥的方式。

内容的提问来源于stack exchange,提问作者ziggy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:00:58