首页 > 解决方案 > python beatifulsoup webscrape循环中的不同元素

问题描述

我想刮的表中有循环

<ul>
<li class="cell036 tal arrow"><a href=" y/">ALdCTL</a></li>
<li class="cell009">5,71</li>
<li class="cell009">5,74</li>   
<li class="cell009">-3,04</li>   
<li class="cell009">5,92</li>   
<li class="cell009">5,76</li>   
<li class="cell009">5,53</li>   
<li class="cell009">907.438</li>   
<li class="cell009">5.114.192</li> 
</ul>

我的python代码适用于在类a的第一个元素中查找文本而不是文本licell009

c=soup.findAll('li',class_='cell036 tal arrow' )

for foo in soup.find_all('li', class_= ['cell036 tal arrow']):

   bar = foo.find(['a'])
   print(bar.text)

标签: pythonweb-scraping

解决方案


借用 drec4s 开放结构,您可能还可以使用 CSS 或组合来按类名定位 li 元素。

from bs4 import BeautifulSoup

html_text = """
<ul>
<li class="cell036 tal arrow"><a href=" y/">ALdCTL</a></li>
<li class="cell009">5,71</li>
<li class="cell009">5,74</li>
<li class="cell009">-3,04</li>
<li class="cell009">5,92</li>
<li class="cell009">5,76</li>
<li class="cell009">5,53</li>
<li class="cell009">907.438</li>
<li class="cell009">5.114.192</li>
</ul>
"""

soup = BeautifulSoup(html_text, "lxml")

for foo in soup.select('li.cell036.tal.arrow,li.cell009'):

   print(foo.text)

推荐阅读