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

Python3使用bs4如何提取指定父标签内无id/class的a标签URL?

问题原因

你的代码存在两处可优化的点,导致无法直接拿到纯净URL:

  • soup.select() 用法错误:该方法接收CSS选择器作为参数,类筛选需要直接写在选择器语法中,你传入的第二个类参数不会生效
  • 提取属性方式不对:不需要将a标签转为字符串手动切割,BeautifulSoup的标签对象可以直接获取属性值

修复后的代码

import requests
from bs4 import BeautifulSoup

header = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:77.0) Gecko/20190101 Firefox/77.0"}

Purl = 'https://www.tunisianet.com.tn/301-pc-portable-tunisie'

req = requests.get(Purl, headers=header)
soup = BeautifulSoup(req.content, 'lxml')

ProductUrl = []

# 直接用CSS选择器定位符合class要求的h2下的a标签,一步到位
show_a = soup.select('h2.h3.product-title a')

for a in show_a:
    # 直接通过get方法获取href属性值,属性不存在时会返回None不会报错
    ProductUrl.append(a.get('href'))

# 输出所有纯净URL
for url in ProductUrl:
    print(url)

补充说明

如果你需要保留原来的分步写法,也可以只修改遍历部分的代码:

showName = soup.select('h2.h3.product-title')
for i in showName:
    a_tag = i.find('a')
    if a_tag:
        ProductUrl.append(a_tag['href'])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 15:18:01