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

使用Python的bs4爬取abafg站点新闻entry-title返回[],求错误排查

爬取abafg.it新闻的问题排查与解决

为啥返回[]?大概率是这两个坑

  • 没加请求头被拦截:很多网站会把不带浏览器标识(User-Agent)的请求当成爬虫,返回空页面或非预期内容,自然解析不到目标元素
  • 选择器定位不准确:你可能直接全局搜索entry-title类,但实际上这个类嵌套在新闻专属的容器标签里,直接查找会匹配不到

正确爬取代码(含标题、链接、发布日期)

先模拟浏览器请求,再精准定位元素:

import requests
from bs4 import BeautifulSoup

# 目标地址
url = "https://www.abafg.it/category/avvisi/"
# 模拟浏览器请求头,可替换为自己浏览器的UA
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"
}

# 发送请求,避免被拦截
response = requests.get(url, headers=headers)
response.encoding = "utf-8"  # 防止中文乱码

# 解析页面
soup = BeautifulSoup(response.text, "html.parser")

# 先定位最新新闻的容器(第一个带entry类的article标签)
latest_news = soup.find("article", class_="entry")
if latest_news:
    # 提取标题
    title = latest_news.find("h2", class_="entry-title").get_text(strip=True)
    # 提取跳转链接
    news_link = latest_news.find("h2", class_="entry-title").find("a")["href"]
    # 提取发布日期(datetime属性为标准格式,也可提取文本)
    publish_date = latest_news.find("time", class_="entry-date")["datetime"]
    # 若要显示友好日期文本,替换为:publish_date = latest_news.find("time", class_="entry-date").get_text(strip=True)

    print(f"标题:{title}")
    print(f"链接:{news_link}")
    print(f"发布日期:{publish_date}")
else:
    print("未获取到新闻内容,请检查请求是否被拦截或页面结构是否变更")

重点提醒

  1. 必须添加User-Agent:这是最容易踩的坑,不加请求头大概率会被网站拦截,返回空内容
  2. 先找父容器再取子元素:直接查找entry-title可能匹配到页面其他无关元素,先定位到新闻的article.entry容器,再提取内部元素精准度更高
  3. 若仍无结果,可先打印response.text查看返回内容:如果是验证码或403页面,需进一步处理反爬(如添加Cookie、使用代理),但目前该站点仅需UA即可正常访问

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 07:35:36