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

使用requests模块爬取WIPO品牌数据库网页无结果的求助

问题

我编写了一个脚本,使用requests模块从指定网页爬取产品名称。运行脚本时状态码显示为200,但无法获取任何结果,请问如何使用requests模块抓取该网页的结果?

from bs4 import BeautifulSoup
import requests

link = "https://branddb.wipo.int/en/advancedsearch/results?sort=score%20desc&strategy=concept&rows=30&asStructure=%7B%22_id%22:%2262a3%22,%22boolean%22:%22AND%22,%22bricks%22:%5B%7B%22_id%22:%2262a4%22,%22key%22:%22type%22,%22value%22:%5B%22AO%22,%22EMBLEM%22,%22GI%22,%22INN%22,%22TRADEMARK%22%5D%7D%5D%7D&_=1722527941041&fg=_void_&start=0"

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36",
    'Accept-Encoding': 'gzip, deflate, br, zstd',
    'Accept-Language': 'en-US,en;q=0.9',
    'referer': 'https://branddb.wipo.int/',
    'origin': 'https://branddb.wipo.int',
}
res = requests.get(link,headers=headers)
print(res.status_code)
soup = BeautifulSoup(res.text,"lxml")
for item in soup.select("span.brandName"):
    print(item.get_text())

解决方案

你遇到的问题是因为目标页面采用动态渲染:直接GET请求返回的HTML仅包含页面框架,实际的品牌数据是通过后续AJAX请求加载的,所以用BeautifulSoup解析静态HTML找不到目标内容。

解决步骤

  1. 定位真实数据接口:
    打开浏览器开发者工具(F12),切换到「Network」标签,刷新页面后筛选「XHR/fetch」类型请求,找到加载搜索结果的API接口(通常是类似/en/advancedsearch/results/data的地址)。
  2. 复制请求参数与Headers:
    查看该API请求的详细信息,复制必要的Headers(包括Cookie,部分网站需要会话验证)、请求方式(POST/GET)和请求参数。
  3. 调整脚本请求API:
    直接请求API接口获取JSON格式数据,无需解析HTML,直接从JSON中提取品牌名称。

修改后的示例脚本

import requests

# 替换为你在开发者工具中找到的真实API地址
api_url = "https://branddb.wipo.int/en/advancedsearch/results/data"

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36",
    'Accept': 'application/json, text/plain, */*',
    'Accept-Language': 'en-US,en;q=0.9',
    'referer': 'https://branddb.wipo.int/en/advancedsearch/results?sort=score%20desc&strategy=concept&rows=30&asStructure=%7B%22_id%22:%2262a3%22,%22boolean%22:%22AND%22,%22bricks%22:%5B%7B%22_id%22:%2262a4%22,%22key%22:%22type%22,%22value%22:%5B%22AO%22,%22EMBLEM%22,%22GI%22,%22INN%22,%22TRADEMARK%22%5D%7D%5D%7D&_=1722527941041&fg=_void_&start=0',
    'origin': 'https://branddb.wipo.int',
    'Content-Type': 'application/json',
    # 从浏览器开发者工具中复制你的Cookie,添加到这里
    'Cookie': '你的Cookie内容'
}

# 搜索参数,从原页面请求中提取并格式化
payload = {
    "sort": "score desc",
    "strategy": "concept",
    "rows": 30,
    "asStructure": {
        "_id": "62a3",
        "boolean": "AND",
        "bricks": [
            {
                "_id": "62a4",
                "key": "type",
                "value": ["AO", "EMBLEM", "GI", "INN", "TRADEMARK"]
            }
        ]
    },
    "start": 0
}

# 发起POST请求(根据实际请求方式调整为GET/POST)
response = requests.post(api_url, headers=headers, json=payload)
print(response.status_code)

# 解析JSON数据并提取品牌名称
if response.status_code == 200:
    data = response.json()
    # 根据API返回的JSON结构调整提取路径
    for result in data.get('results', []):
        print(result.get('brandName'))

注意事项

  • Cookie是关键:部分网站会验证会话,必须带上浏览器中当前有效的Cookie,否则可能返回空数据或403错误。
  • 适配请求方式:确认API是POST还是GET请求,参数传递方式对应调整(POST用json参数,GET用params参数)。
  • 定期检查接口:网站可能更新API结构或参数,若脚本失效需重新定位接口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 01:45:05