HTML应用指南:利用POST请求获取全国中石化易捷门店位置信息
中国石化(Sinopec)作为国家能源安全的压舱石与现代能源体系的核心支柱,始终秉持“为美好生活加油”的企业使命,致力于构建覆盖全国、高效智能、绿色低碳的现代化综合能源服务网络。依托“油气氢电服”五位一体的能源供给体系与“易捷零售+车生态+会员服务”的非油业务矩阵,中石化已建成全球规模最大的加油站网络,形成以能源补给为核心、便民服务为延伸、数字平台为支撑的全场景用户服务体系,深度融入国家“双碳”战略与“交通强国”“数字中国”建设大局。
线下加油站作为中石化服务社会民生与经济运行的“能源前哨”,不仅是提供汽柴油、充电、加氢、LNG等多元能源补给的核心节点,更是承载易捷便利店、汽车养护、会员服务、应急保障、便民公益等综合功能的城市基础设施。各站点严格遵循“形象统一、服务标准、安全规范、智慧运营”的管理要求,注重打造“安全、便捷、绿色、智能”的消费环境,全面推广自助加油、无感支付、智能巡检、数字看板、会员精准营销等数字化工具,强化“即加即走”“一站全服务”“安全零事故”的用户体验,持续提升能源服务效率与品牌社会价值。
本文将探讨如何通过程序化方式,基于浏览器自动化技术(Selenium)模拟真实用户操作,对中石化官方服务平台进行结构化数据采集,实现全国加油站基础信息的自动化抓取与归档。由于目标页面采用动态渲染机制,且依赖前端交互(如分页点击、省份筛选),采用 Selenium 模拟人工浏览行为,可有效绕过基础反爬限制,稳定获取完整页面内容。在采集过程中,程序自动遍历所有省份、逐页点击“下一页”按钮,结合 BeautifulSoup 解析返回的 HTML 结构,精准提取包括站点编号、所属省市、详细地址、联系电话、服务类型(售卡充值/电子发票/增值税发票等)、营业状态、所属区域公司等关键字段,并最终结构化输出为 CSV 格式,便于后续空间分析、服务网络优化与数字化决策支持。
中国石化易捷门店查询网址:中国石化加油卡网上营业厅
首先,我们找到中国石化易捷门店的存储位置,然后看3个关键部分标头、负载、 预览;
标头:通常包括URL的连接,也就是目标资源的位置;
负载:对于GET请求:负载通常包含了传递的参数,有些网页负载可能为空,或者没有负载,因为所有参数都通过URL传递,这里我们可以看到行政区的编码,页面码等标签,没有进行加密;
预览:指的是对响应内容的快速查看或摘要显示,可以帮助用户快速了解返回的数据结构或内容片段,我们可以看到数据在直接就在页面里;
接下来就是数据获取部分,先讲一下方法思路,一共三个步骤;
方法思路
- 找到对应数据存储位置,获取行政区名称表数据;
- 我们通过Selenium 模拟人工浏览行为结合 BeautifulSoup 解析返回的 HTML 结构,来遍历全国网点的标签数据;
- 地理编码→地址转经纬度,再通过coord-convert库实现GCJ-02转WGS84;
首先,我们观察到它的查询方式依然是通过不同行政区编码查询,那我们直接在"Fetch/XHR"直接检索,刚刚负载查到的城市,比如上海市,就是"31", 找到检索包含"31"的请求,我们可以看到响应请求包含行政区编码对应内容的响应请求,另外,根据上面负载的内容,我们可以知道,数据是直接通过行政区编码进行传递的,为了方便我们可以建立一个包含行政区编码的字典,通过遍历行政区编码来查询全国数据;
第一步:利用requests库发送HTTP请求获取所有行政区编码表,并根据标签进行保存,另存为csv;
完整代码#运行环境 Python 3.11
import requests
from bs4 import BeautifulSoup
import csvurl = "https://www.sinopecsales.com/website/gasStationAction_queryGasStationByCondition.action"
params = {"province": "31", "page.pageNo": "1", "stationCharge": "2"}try:html = requests.get(url, params=params, timeout=10).text
except Exception as e:print(f"请求失败: {e}")exit()