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

API返回HTML而非JSON的数据处理及网页内容爬取问题

从HTML响应中提取数据的实用方案

Python 环境下的解决方案

  • 用BeautifulSoup库解析HTML(最常用的方案)
    1. 先安装依赖:pip install beautifulsoup4 requests
    2. 示例代码(以提取并下载图片为例):
      import requests
      from bs4 import BeautifulSoup
      
      # 目标网站URL
      target_url = "你要访问的网站地址"
      # 发送请求获取HTML内容
      resp = requests.get(target_url)
      # 初始化解析器
      soup = BeautifulSoup(resp.text, 'html.parser')
      
      # 提取所有图片标签
      all_imgs = soup.find_all('img')
      for img in all_imgs:
          img_src = img.get('src')
          # 处理相对路径,转成完整URL
          if img_src.startswith('/'):
              # 拼接网站域名和相对路径
              domain = '/'.join(target_url.split('/')[:3])
              img_src = f"{domain}{img_src}"
          # 下载图片
          img_resp = requests.get(img_src)
          # 用图片文件名保存
          with open(img_src.split('/')[-1], 'wb') as f:
              f.write(img_resp.content)
      
    3. 灵活定位元素:可以通过类名、ID、标签属性精准找内容,比如soup.find('div', class_='article-content')就能定位到指定类的div容器。

JavaScript/Node.js 环境下的解决方案

  • 用cheerio库(语法和jQuery几乎一致,上手快)
    1. 安装依赖:npm install axios cheerio
    2. 示例代码:
      const axios = require('axios');
      const cheerio = require('cheerio');
      const fs = require('fs');
      const path = require('path');
      
      async function extractImages() {
          const targetUrl = "你要访问的网站地址";
          const resp = await axios.get(targetUrl);
          // 加载HTML到解析器
          const $ = cheerio.load(resp.data);
      
          // 遍历所有img标签
          $('img').each(async (_, elem) => {
              let imgUrl = $(elem).attr('src');
              // 处理相对路径
              if (imgUrl.startsWith('/')) {
                  const urlObj = new URL(targetUrl);
                  imgUrl = `${urlObj.protocol}//${urlObj.host}${imgUrl}`;
              }
              // 下载并保存图片
              const imgResp = await axios.get(imgUrl, { responseType: 'stream' });
              const fileName = path.basename(imgUrl);
              imgResp.data.pipe(fs.createWriteStream(fileName));
          });
      }
      
      extractImages();
      

避坑提示

  • 别用正则解析HTML:HTML结构嵌套复杂,正则很容易漏匹配或误匹配,维护起来头疼,优先用专业解析库。
  • 遵守网站规则:别高频次请求,避免IP被封;先看网站的robots.txt,确认允许爬取的内容。
  • 动态内容处理:如果用上面的方法找不到数据,大概率是内容是JavaScript动态渲染的,这时候需要用Selenium(Python)或Puppeteer(Node.js)模拟浏览器加载页面。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 19:09:28