You need to enable JavaScript to run this app. 使用HuggingFace transformers做金融文本摘要无法抓取网页内容求助
优惠活动
大模型
产品
解决方案
定价
更多

使用HuggingFace transformers做金融文本摘要无法抓取网页内容求助

问题根源

你遇到的返回异常是雅虎财经的反爬机制拦截了默认的requests请求,直接用requests.get()发起请求时,请求头里没有合法的User-Agent信息,雅虎服务器会直接返回反爬提示页面,而非你要的新闻正文,所以你提取到的<p>标签只有反爬提示内容,没有正文段落。


修复方案

第一步:修改请求逻辑,增加合法请求头

给requests请求添加模拟浏览器的User-Agent,绕过基础反爬校验,示例代码如下:

# 增加请求头配置
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
}
# 注意清理原URL里多余的「enter code here」无效字符,否则会指向404页面
url = "https://au.finance.yahoo.com/news/china-restricting-tesla-use-uncovers-a-significant-challenge-for-elon-musk-expert-161921664.html"
# 发起请求时传入headers参数
r = requests.get(url, headers=headers)
r.encoding = "utf-8" # 避免中文乱码
soup = BeautifulSoup(r.text, 'html.parser')

如果还是遇到拦截,可以给请求头补充从自己浏览器访问雅虎财经时提取的Referer、Cookie参数。

第二步:精准定位正文段落,避免提取无关内容

雅虎财经的正文段落默认都放在class为caas-body的容器下,不要直接提取全局的<p>标签,避免拿到广告、导航栏的无关内容:

# 先定位正文容器
content_container = soup.find("div", class_="caas-body")
if content_container:
    paragraphs = content_container.find_all("p")
    # 拼接正文内容
    article_content = " ".join([p.text.strip() for p in paragraphs if p.text.strip()])
else:
    print("未获取到正文内容,请检查URL有效性或反爬拦截情况")

第三步:传入Pegasus模型生成摘要

拿到完整正文后,调用预训练模型做摘要生成,示例代码如下:

# 对正文做tokenize处理,控制输入长度
input_ids = tokenizer(article_content, return_tensors="pt", truncation=True, max_length=512).input_ids
# 生成摘要,可根据需求调整max_length、num_beams参数
output = model.generate(input_ids, max_length=150, num_beams=5, early_stopping=True)
# 解码输出摘要
summary = tokenizer.decode(output[0], skip_special_tokens=True)
print("生成的摘要:", summary)

额外注意事项

  • 不要短时间内发起大量请求,避免被雅虎封禁IP。
  • 如果正文长度超过模型输入限制,可以先把正文拆分成多个片段分别生成摘要,再做二次整合。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 06:45:02