Python Beautifulsoup-如何从<;span>';s
我正试图搜刮一个网站。一切都很顺利,但我想在Python Beautifulsoup-如何从<;span>';s,python,beautifulsoup,Python,Beautifulsoup,我正试图搜刮一个网站。一切都很顺利,但我想在之间找到文本。我能找到第一个,但我不能找到下一个。 这是html摘录: <ul class="product-small-specs" data-test="product-specs"> <li> <span>Engels</span> </li> <li> <span>Hardcover</span> &l
之间找到文本。我能找到第一个,但我不能找到下一个。
这是html摘录:
<ul class="product-small-specs" data-test="product-specs">
<li>
<span>Engels</span>
</li>
<li>
<span>Hardcover</span>
</li>
<li>
<span>9780141395838</span>
</li>
<li>
<span>Druk: New ed</span>
</li>
<li>
<span>oktober 2014</span>
</li>
<li>
<span>352 pagina's</span>
</li>
</ul>
我得到了“恩格斯”(这没关系)
但是如何在下一个“span”之间获取文本
xxx.span.next_sibling
给出'/n'
任何帮助都将不胜感激
编辑:
网址是
rec\u all=soup.find\u all(“ul”,class=“产品小规格”)
rec=soup.find(“ul”,class=“产品小规格”)
对于rec_all中的IET:
对于iets中的
打印(a.span.text)
打印(a.span.next_sibling)
您可以使用find_all(“span”)
获取包含所有
的列表,然后您可以使用for
-循环从列表中的每个项目获取文本
from bs4 import BeautifulSoup as BS
text = '''<ul class="product-small-specs" data-test="product-specs">
<li>
<span>Engels</span>
</li>
<li>
<span>Hardcover</span>
</li>
<li>
<span>9780141395838</span>
</li>
<li>
<span>Druk: New ed</span>
</li>
<li>
<span>oktober 2014</span>
</li>
<li>
<span>352 pagina's</span>
</li>
</ul>'''
soup = BS(text, 'html.parser')
all_items = soup.find_all('span')
for item in all_items:
print(item.text)
编辑:如果您需要所选
中的所有
,则可以使用
ul = soup.find('ul', class_="product-small-specs")
all_items = ul.find_all('span') # search only inside `ul`
for item in all_items:
print(item.text)
首先显示此页面的代码和url。也许page使用JavaScript添加项目,而BS无法运行JavaScript。也许您应该使用
find_all('span')
获取包含所有span
的列表,然后使用for
-loop从列表中的每个元素获取文本。rec_all=soup。find_all(“ul”,class=“产品小规格”)rec=soup。find(“ul”,class=“产品小规格”)对于rec_all中的iets:对于in-iets:print(a.span.text)print(a.span.next_sibling)url总是会对代码、数据和错误消息产生疑问-它将更具可读性,更多的人会看到它。问题是页面上有数百个span。我只想从span中获取本部分的文本(ul类=…),然后使用find
或find\u all
获取
,然后您可以使用ul
而不是soup
在该项目内搜索-请参阅添加的代码。非常感谢!这就是我要找的。在这件事上伤了我好几个小时的头!谢谢!
Engels
Hardcover
9780141395838
Druk: New ed
oktober 2014
352 pagina's
ul = soup.find('ul', class_="product-small-specs")
all_items = ul.find_all('span') # search only inside `ul`
for item in all_items:
print(item.text)