gpt4 book ai didi

python - Python 中的网页抓取 - 如何捕获所有 元素

转载 作者:行者123 更新时间:2023-11-30 22:06:25 25 4
gpt4 key购买 nike

我正在使用beautifulsoup4从歌词.com 网站抓取数据,特别是此链接:https://www.lyrics.com/album/1447935 .

从这个 block 中,我试图提取 <a>元素:

[<table class="tdata">
<colgroup>
<col style="width: 50px;"/>
<col style="width: 430px;"/>
<col style="width: 80px;"/>
<col style="width: 80px;"/>
</colgroup>
<thead>
<tr>
<th>#</th>
<th>Song</th>
<th>Duration</th>
<th> </th>
</tr>
</thead>
<tbody>
<tr>
<td class="tal qx">1</td>
<td class="tal qx">
<strong>
<a href="/lyric/15183453/Make+You+Feel+My+Love">Make You Feel My Love</a>
</strong>
</td>
<td class="tal qx">3:32</td>
<td class="tal vam rt">
</td></tr><tr><td class="tal qx">2</td>
<td class="tal qx">
<strong>
<a href="/lyric/15183454/Painting+Pictures">Painting Pictures</a>
</strong>
</td>
<td class="tal qx">3:33</td>
<td class="tal vam rt"> </td>
</tr>
</tbody>
</table>]

这是我的代码:

url = "http://www.lyrics.com" + album_url
page = r.get(url)
soup = bs(page.content, "html.parser")
songs = [a.get('href') for a in (table.find('a') for table in soup.findAll('table')) if a]

但是,它只返回第一个 <a> :

['/lyric/15183453/Make+You+Feel+My+Love']

可能出了什么问题?

编辑:谢谢大家的回答!我投了赞成票,但没有足够的代表来显示

最佳答案

这会起作用:

songs = [song['href'] for song in soup.select('table a')]

输出:

['/lyric/15183453/Make+You+Feel+My+Love', '/lyric/15183454/Painting+Pictures']

关于python - Python 中的网页抓取 - 如何捕获所有 <a> 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52730924/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com