al *_*vic 2 python beautifulsoup web-scraping
我正在尝试使用beautifulSoup从html页面中提取几个标签。该页面包含1-100的排名列表,因此我想提取每个项目的所有和标签。
我尝试使用以下代码:
info = soup.find_all('tbody')
for item in info.find_all('tr'):
for cells in item.find_all('td'):
print (cells)
Run Code Online (Sandbox Code Playgroud)
但保持相同的AttributeError:ResultSet对象没有属性'find_all'。您可能正在将项目列表像单个项目一样对待。当您打算调用find()时,是否调用过find_all()?
info = soup.find_all('tbody')
Run Code Online (Sandbox Code Playgroud)
输出:tbody
<tr
<td class="field-index ">1/td
<td class="field-release "><a class="link-release" href="/release/712">The Beatles [White Album]</a>/td
<td class="field-performer "><a class="link-performer" href="/artist/41">The Beatles</a></td
<td class="field-covers text-right">1633/td
</tr
Run Code Online (Sandbox Code Playgroud)
对于<tr>此页面的每个标签,我想将每个<td>标签拉入其中。因此,我首先需要返回:
1
The Beatles [White Album]
The Beatles
1633
Run Code Online (Sandbox Code Playgroud)
请让我知道如何解决此问题。
你可以只用熊猫
import pandas as pd
table = pd.read_html('https://secondhandsongs.com/statistics?sort=covers&list=stats_release_covers')[0]
print(table)
Run Code Online (Sandbox Code Playgroud)
否则,您可以通过id来获取表,并使用后代组合tr 器添加类型选择器,以便所有行都可以使用;然后循环抓行:tds
from bs4 import BeautifulSoup as bs
import requests
r = requests.get('https://secondhandsongs.com/statistics?sort=covers&list=stats_release_covers')
soup = bs(r.content, 'lxml')
rows = soup.select('#vw tr')
for row in rows:
print([td.text for td in row.select('td')])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
45 次 |
| 最近记录: |