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

Python爬取BIS多链接页面演讲标题作者时select返回空列表求助

问题根因

你的选择器返回空列表,核心是两个问题:

  • 发起请求时没有携带合法的User-Agent请求头:requests默认的UA标识为python-requests/xxx,目标网站的反爬规则会直接拦截这类爬虫请求,返回的响应内容和浏览器正常访问得到的页面结构完全不一致,根本不存在你要匹配的元素。
  • 你通过SelectorGadget获取的选择器是JS渲染后的页面对应的,虽然该站点的演讲列表本身是静态嵌入HTML返回的,但#cbspeeches_list a选择范围过宽,在没拿到正确页面源码的情况下必然匹配不到结果。
修正代码

首先给请求加上浏览器UA模拟正常访问,再精准定位每一行演讲条目提取信息即可,无需引入动态渲染工具,可直接运行:

from bs4 import BeautifulSoup
import requests

url = 'https://www.bis.org/cbspeeches/index.htm?m=1123'
# 配置请求头模拟Chrome浏览器访问
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36"
}
resp = requests.get(url, headers=headers)
resp.encoding = "utf-8"
soup = BeautifulSoup(resp.text, "lxml")

speech_list = []
# 遍历列表每一行
for row in soup.select("#cbspeeches_list tbody tr"):
    title_ele = row.select_one("td.title a")
    author_ele = row.select_one("td.author")
    speech_list.append({
        "title": title_ele.get_text(strip=True),
        "author": author_ele.get_text(strip=True)
    })

# 打印输出结果
for item in speech_list:
    print(f"标题:{item['title']},作者:{item['author']}")

提示:你原代码中导入的numpy没有任何实际用途,可以删除,避免冗余依赖。
运行上述代码即可正常获取第一页全部10条演讲的标题、作者信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 15:57:13