在Python中使用BeautifulSoup解析多个项

2024-09-30 02:18:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从一个网站上解析HTML,其中有多个元素具有相同的类ID;我设法弄到一件东西,但不是全部

下面是我试图解析的一些HTML:

<h1>Synonymes travail</h1>
<div class="container-bloc1">
    <strong> Nom</strong>
    <br/>
    -
    <i><a class="lien2" href="/fr/accouchement.html"> accouchement </a></i>
    :
    <a class="lien3" href="/fr/gésine.html"> gésine</a>
    <br/>
    -
    <i> <a class="lien2" href="/fr/action.html">  action </a></i>
    :
    <a class="lien3" href="/fr/activité.html"> activité</a>
    ,
    <a class="lien3" href="/fr/labeur.html"> labeur</a>
</div>

在Python中,我这样写:

from bs4 import BeautifulSoup
import requests
import csv

source = requests.get("http://www.synonymes.net/fr/travail.html").text

soup = BeautifulSoup(source, "lxml")

for synonyme in soup.find_all("div", class_="container-bloc1"):
    print(synonyme)

synonymesdumot = synonyme.find("a", class_="lien2").text
    print(synonymesdumot)

for synonymesautres in synonyme.find_all("a", class_="lien3").text:
    print(synonymesautres)

第一部分工作正常,因为HTML文件中只有一个“lien2”。我也可以为“lien3”做同样的事情,但我只得到一个项目,我想要所有的项目

我做错什么了?谢谢你们的帮助


Tags: textimportdivhtmlfrfindh1class
1条回答
网友
1楼 · 发布于 2024-09-30 02:18:11

如果按问题中的方式编写代码,则会遇到一个AttributeError,因为.find_all()的输出是一个没有属性text的标记集合(更具体地说是ResultSet);但是它的每一个元素,都是type bs4.Element.Tag的。因此,您需要为for循环中的每个标记获取text属性:

for synonymesautres in synonyme.find_all("a", class_="lien3"):
    print(synonymesautres.text)

输出:

le
travail
manque
de
travail
travail
fatigant

相关问题 更多 >

    热门问题