如何用Python Requests库抓取GasBuddy站点的Regular汽油价格?
如何用Python Requests抓取GasBuddy的普通汽油价格
首先先修正你代码里的一个小错误:req.content是属性而非可调用方法,写成req.content()会触发报错,应该改成req.content或者用req.text(后者更适合后续HTML解析)。
你不需要在GET请求里加关键词查询——页面的价格数据直接包含在返回的HTML内容里,你要做的是解析HTML来提取目标价格。这里推荐用BeautifulSoup库处理HTML解析,步骤如下:
1. 安装依赖
先安装BeautifulSoup工具库:
pip install beautifulsoup4
2. 修改代码提取价格
先打开目标页面,按F12启动浏览器开发者工具,找到"Regular"价格对应的HTML元素。比如查看该页面后,普通汽油价格在带有StationDisplayPrice-module__price___3rARL类的span标签内,我们可以用这个类定位元素。
修改后的完整代码:
import requests from bs4 import BeautifulSoup test_URL = "https://www.gasbuddy.com/station/194205" def get_data(link): hdr = {'user-agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Mobile Safari/537.36'} req = requests.get(link, headers=hdr) # 将HTML文本转为可解析对象 soup = BeautifulSoup(req.text, 'html.parser') # 定位普通汽油价格的元素 regular_price_tag = soup.find('span', class_='StationDisplayPrice-module__price___3rARL') if regular_price_tag: # 提取价格文本并转为数值格式 regular_price = float(regular_price_tag.text.strip()) print(f"普通汽油价格: ${regular_price}") else: print("未找到普通汽油价格对应的元素") get_data(test_URL)
关键说明
BeautifulSoup(req.text, 'html.parser'):把返回的HTML文本转换成可遍历解析的对象soup.find():根据标签名和class属性定位目标元素,若网站后续更新了页面结构,需要重新在开发者工具里查看最新的元素标识并调整参数- 用
strip()去除价格文本的多余空格,转成float类型方便后续计算或存储
内容的提问来源于stack exchange,提问作者bobthebuilder
相关产品推荐
相关产品推荐

