我正在使用beautifulsoup4
从歌词网网站,特别是这个链接:https://www.lyrics.com/album/1447935。你知道吗
从这个块中,我试图提取两个<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']
有什么问题吗?你知道吗
编辑:谢谢大家的回答!我投了更高的票,但我没有足够的代表来展示
这将起作用:
输出:
其他解决方案很好,但我更喜欢使用好的旧选择器
这将打印
如果您不熟悉选择器,这将获取具有类
tdata
的table
元素,然后收集a
元素上的所有href
属性能够使它与:
不过,我仍然不知道为什么其他方法不起作用,因为我在程序的其他地方使用过它,没有任何问题。你知道吗
相关问题 更多 >
编程相关推荐