鱼C论坛

 找回密码
 立即注册
查看: 259|回复: 7

[已解决]新手问题

[复制链接]
发表于 2024-7-15 10:26:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
<ul class="full">
    <li id="D197listImg-572b4b91-200e-4690-8d3a-3913ea200dfc/0" data-url="" class="li-active">
            <div class="tags">专题班</div>
        <div class="context text-overflow active-status li-active">
            <span class="active">正在进行</span>
            <span class="li-active">培训班1</span>
        </div>
    </li>

    <li id="D197listImg-d4fe3660-95f1-4a10-81c5-0ce5e4655d69/1" data-url="" class="">
            <div class="tags">专题班</div>
        <div class="context text-overflow  active-status ">
            <span class=" active ">正在进行</span>
            <span>培训班2</span>
        </div>
    </li>

    <li id="D197listImg-c1fc2792-50c0-4850-a872-5dbaab28064e/2" data-url="" class="">
            <div class="tags">专题班</div>
        <div class="context text-overflow  active-status ">
            <span class=" active ">正在进行</span>
            <span>培训班3</span>
        </div>
    </li>

    <li id="D197listImg-5b43f47f-a68c-4e9f-ae51-3ba9577f648b/3" data-url="" class="">
            <div class="tags">专题班</div>
        <div class="context text-overflow  active-status ">
            <span class=" active ">正在进行</span>
            <span>培训班4</span>
        </div>
    </li>
</ul>

在每组<li>标签内获取信息:
第一组 <span class="li-active">:获取文字是培训会1
第二至四组 <span>:分别获取文字是培训会2、培训会3、培训会4

这个for循环怎么写?
最佳答案
2024-7-15 10:36:26
球最佳~
// 获取所有的li元素  
const listItems = document.querySelectorAll('ul.full li');  
  
// 遍历每一个li元素  
listItems.forEach((item, index) => {  
    // 查找当前li下的span元素  
    const spans = item.querySelectorAll('span');  
  
    // 假设每个li中最多有两个span元素,第一个用于状态(如“正在进行”),第二个用于培训班名称  
    if (spans.length > 1) {  
        // 第一个span是状态,第二个span是培训班名称  
        const trainingName = spans[1].textContent.trim();  
  
        // 检查是否需要特别处理第一个li(具有li-active类的那个)  
        if (index === 0 && item.querySelector('.li-active')) {  
            // 这里我们假设第一个li的培训班名称也是通过第二个span获取的,  
            // 但实际上它可能直接通过.li-active类获取,不过根据你的HTML结构,我们不需要这样做  
            console.log(`第一组 <span class="li-active">:获取文字是${trainingName}`);  
        } else {  
            // 对于第二至四组,直接输出培训班名称  
            console.log(`第${index + 1}组 <span>:获取文字是${trainingName}`);  
        }  
    } else if (spans.length === 1 && item.querySelector('.li-active')) {  
        // 如果只有一个span且带有li-active类,则可能是第一组且培训班名称就在这个span里  
        // 但根据你的HTML,这种情况不存在,因为第一个li的培训班名称在第二个span里  
        // 这里只是作为一个理论上的处理示例  
        const trainingName = spans[0].textContent.trim();  
        console.log(`第一组 <span class="li-active">:获取文字是${trainingName}`);  
    }  
});
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-7-15 10:26:55 | 显示全部楼层
看样子你是要从多个相同结构的标签组中提取信息,这里给你一个简洁的Python示例,使用BeautifulSoup来解析HTML并提取你需要的信息。

首先,假设你有以下HTML结构:
<div class="topic">
    <span>专题班</span>
    <span>正在进行</span>
    <span>培训班1</span>
</div>
<div class="topic">
    <span>专题班</span>
    <span>正在进行</span>
    <span>培训班2</span>
</div>
<div class="topic">
    <span>专题班</span>
    <span>正在进行</span>
    <span>培训班3</span>
</div>
<div class="topic">
    <span>专题班</span>
    <span>正在进行</span>
    <span>培训班4</span>
</div>

接下来,用BeautifulSoup来解析并提取数据:
from bs4 import BeautifulSoup

html_doc = '''
<div class="topic">
    <span>专题班</span>
    <span>正在进行</span>
    <span>培训班1</span>
</div>
<div class="topic">
    <span>专题班</span>
    <span>正在进行</span>
    <span>培训班2</span>
</div>
<div class="topic">
    <span>专题班</span>
    <span>正在进行</span>
    <span>培训班3</span>
</div>
<div class="topic">
    <span>专题班</span>
    <span>正在进行</span>
    <span>培训班4</span>
</div>
'''

soup = BeautifulSoup(html_doc, 'html.parser')

# 找到所有的<div class="topic">
topics = soup.find_all('div', class_='topic')

# 使用for循环提取每个div中的第三个<span>的内容
for i, topic in enumerate(topics, start=1):
    span_text = topic.find_all('span')[2].get_text()
    print(f"培训班{i}: {span_text}")

这个for循环做了以下几件事:

1. 使用`find_all`方法找到所有的`<div class="topic">`标签。
2. 遍历这些`<div>`标签,每一个`<div>`内再使用`find_all`找到所有的`<span>`标签。
3. 获取第三个`<span>`的文字内容(即索引为2的元素)。
4. 使用`enumerate`来自动生成培训班的编号,并打印出结果。

输出结果应该是:
培训班1: 培训班1
培训班2: 培训班2
培训班3: 培训班3
培训班4: 培训班4

这样,每个标签组内的信息都被成功提取出来了。希望这个例子对你有所帮助,编码愉快!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-7-15 10:36:26 | 显示全部楼层    本楼为最佳答案   
球最佳~
// 获取所有的li元素  
const listItems = document.querySelectorAll('ul.full li');  
  
// 遍历每一个li元素  
listItems.forEach((item, index) => {  
    // 查找当前li下的span元素  
    const spans = item.querySelectorAll('span');  
  
    // 假设每个li中最多有两个span元素,第一个用于状态(如“正在进行”),第二个用于培训班名称  
    if (spans.length > 1) {  
        // 第一个span是状态,第二个span是培训班名称  
        const trainingName = spans[1].textContent.trim();  
  
        // 检查是否需要特别处理第一个li(具有li-active类的那个)  
        if (index === 0 && item.querySelector('.li-active')) {  
            // 这里我们假设第一个li的培训班名称也是通过第二个span获取的,  
            // 但实际上它可能直接通过.li-active类获取,不过根据你的HTML结构,我们不需要这样做  
            console.log(`第一组 <span class="li-active">:获取文字是${trainingName}`);  
        } else {  
            // 对于第二至四组,直接输出培训班名称  
            console.log(`第${index + 1}组 <span>:获取文字是${trainingName}`);  
        }  
    } else if (spans.length === 1 && item.querySelector('.li-active')) {  
        // 如果只有一个span且带有li-active类,则可能是第一组且培训班名称就在这个span里  
        // 但根据你的HTML,这种情况不存在,因为第一个li的培训班名称在第二个span里  
        // 这里只是作为一个理论上的处理示例  
        const trainingName = spans[0].textContent.trim();  
        console.log(`第一组 <span class="li-active">:获取文字是${trainingName}`);  
    }  
});
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-7-15 14:44:02 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-7-15 15:22:52 | 显示全部楼层
本帖最后由 某一个“天” 于 2024-7-15 15:24 编辑


能帮助鱼油就行,要不都没人理他
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-7-16 09:14:21 | 显示全部楼层
某一个“天” 发表于 2024-7-15 15:22
能帮助鱼油就行,要不都没人理他

谢谢支持。来论坛都没人帮助。哎。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-7-16 09:25:50 | 显示全部楼层
本帖最后由 fengma 于 2024-7-16 09:39 编辑

编辑中……                                            
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-7-16 09:46:42 | 显示全部楼层
fengma 发表于 2024-7-16 09:14
谢谢支持。来论坛都没人帮助。哎。

你整点渔币悬赏啊,大佬都没动力了,现实中农民工求人办事,都知道买两条烟
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 23:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表