使用Python中的BeautifulSoup解析多个项目
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Python中的BeautifulSoup解析多个项目相关的知识,希望对你有一定的参考价值。
我正在尝试从网站解析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”做同样的事情,但我只得到一个项目,我想要所有这些项目。
我在这做错了什么?谢谢你的帮助!
答案
如果你的问题中的代码,你会遇到AttributeError
,因为.find_all()
的输出是一个标签集合(更具体地说是ResultSet
)没有属性text
;但它的每个元素都是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
以上是关于使用Python中的BeautifulSoup解析多个项目的主要内容,如果未能解决你的问题,请参考以下文章
python爬虫学习记录解析库的使用——BeautifulSoup