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

如何使用BeautifulSoup提取href中的URL?现有代码问题求助

问题分析与解决方案

嘿,我一眼就看出问题出在哪啦!你现在的代码里,el是选中的<li class="arrow03">元素,但**href属性根本不在<li>标签上**——它是属于<li>里面嵌套的<a>标签的,所以你直接用el.get('href')当然拿不到值,只会返回默认的"no URLs"。

给你两种修改思路,根据页面实际情况选:

方案1:每个<li>里只有一个<a>标签(最常见场景)

直接用find()代替find_all()获取单个<a>标签,再从中提取href:

import requests as r
from bs4 import BeautifulSoup

url = r.get('https://jen.jiji.com/')

soup = BeautifulSoup(url.text, "html.parser")

for el in soup.find_all('li', attrs={'class': 'arrow03'}):
    # 用find()获取单个a标签,而非返回列表的find_all()
    a_tag = el.find('a')
    if a_tag:  # 先判断标签是否存在,避免报错
        link = a_tag.get('href', 'no URLs')
        print(a_tag.text)  # 可选:打印a标签显示的文本内容
        print(link)
    else:
        print("当前li中未找到a标签")

方案2:每个<li>里有多个<a>标签

如果一个<li>里包含多个<a>,就遍历find_all()返回的列表,逐个提取href:

import requests as r
from bs4 import BeautifulSoup

url = r.get('https://jen.jiji.com/')

soup = BeautifulSoup(url.text, "html.parser")

for el in soup.find_all('li', attrs={'class': 'arrow03'}):
    a_tags = el.find_all('a')
    for a_tag in a_tags:
        link = a_tag.get('href', 'no URLs')
        print(a_tag.text)
        print(link)

额外小提示

  • 提取属性前先判断标签是否存在,能避免出现AttributeError(比如某个<li>里恰好没有<a>标签的情况)。
  • 如果后续遇到爬取被拦截的情况,可以给请求加headers(比如模拟浏览器的User-Agent),提升请求的通过率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 16:50:16