You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用BeautifulSoup4无法抓取指定表格数据的技术求助

别担心,刚入门web scraping的时候摸不着头脑太正常了!我来一步步带你用BeautifulSoup4搞定这个表格数据的抓取~

第一步:先安装必要的工具库

首先你需要安装两个Python库:requests用来获取网页内容,beautifulsoup4用来解析HTML。打开命令行,输入下面的命令:

pip install requests beautifulsoup4
第二步:编写抓取代码

下面是针对你需求的完整代码,我会在后面详细解释每一部分:

import requests
from bs4 import BeautifulSoup

# 替换成你要抓取的目标网站的URL
target_url = "这里填你要爬的网站地址"

# 1. 获取网页内容
response = requests.get(target_url)
if response.status_code != 200:
    print(f"哎呀,请求网页失败了,状态码:{response.status_code}")
    exit()

# 2. 用BeautifulSoup解析HTML
soup = BeautifulSoup(response.text, "html.parser")

# 3. 定位目标表格
# 因为你说表格在页面中部,我们可以通过表格里的特征文本(比如"末四位数")来找到它
target_table = None
all_tables = soup.find_all("table")
for table in all_tables:
    if "末四位数" in table.get_text():
        target_table = table
        break

if not target_table:
    print("没找到目标表格哦,可能是URL不对或者页面结构变了")
    exit()

# 4. 提取表格里的数据
result = {}
# 遍历表格的每一行
for row in target_table.find_all("tr"):
    # 获取每行的单元格(可能是<td>或者<th>标签)
    cells = row.find_all(["td", "th"])
    # 确保每行至少有两个单元格(一个是标签,一个是数字)
    if len(cells) >= 2:
        # 提取标签文本(比如"末四位数"),去掉多余的空格
        label = cells[0].get_text(strip=True)
        # 提取数字部分,按逗号分割成列表,去掉每个数字的空格
        numbers = [num.strip() for num in cells[1].get_text(strip=True).split(",")]
        result[label] = numbers

# 5. 打印或者保存结果
print("抓取到的数据:")
for label, nums in result.items():
    print(f"{label}: {nums}")
代码解释
  • 获取网页内容requests.get(target_url)会帮你把网页的HTML代码下载下来,status_code == 200表示请求成功。
  • 解析HTMLBeautifulSoup会把杂乱的HTML代码转换成容易操作的对象,不用你手动去读复杂的标签结构。
  • 定位表格:我们先找出页面里所有的表格,然后逐个检查哪个表格包含你要的“末四位数”文本,这样就能精准定位到目标表格,不用管它在页面的哪个位置。
  • 提取数据:遍历表格的每一行,把每行的标签(比如“末四位数”)和对应的数字组提取出来,用逗号分割成列表,最后整理成字典格式,方便你后续使用或者保存。
小提示

如果运行后没找到表格,可能是页面结构和我假设的不一样:

  1. 检查目标表格的标签:有些表格可能用了div代替table,或者有特定的class属性(比如<table class="prize-table">),这时候可以用soup.find("table", class_="prize-table")直接定位。
  2. 查看网页源码:你可以右键点击页面的表格,选择“检查”,看看浏览器开发者工具里表格的具体结构,然后调整代码里的定位方式。

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

火山引擎 最新活动