Python网页抓取html与xpath语法issu

2024-04-26 03:17:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我对python还不熟悉,我正试图在billboard热门100强排行榜上拔得头筹。我知道已经有一个图书馆了,但我正在练习(而且做得不一样)。我的问题是Billboard的歌曲列表与艺术家不匹配,因为选择艺术家的语法在“a”元素和“span”元素之间变化。如何包含这两种类型的元素,它们都包含[@class=“chart-row\uu artist”]

目前我有:

artists = [x.strip() for x in tree.xpath('//a[@class="chart-row__artist"]/text()')]

但这也拉起了歌曲的跨度:

artists = [x.strip() for x in tree.xpath('//span[@class="chart-row__artist"]/text()')]

它在页面上交替出现。有什么建议吗


Tags: textintree元素forartistchart歌曲
2条回答

使用xpath有必要吗?我很容易就得到了bs4所有艺术家的名单

import requests
from bs4 import BeautifulSoup

response = requests.get('https://www.billboard.com/charts/hot-100')
soup = BeautifulSoup(response.content, 'lxml')
artists = [row.text.strip() for row in soup.select('.chart-row__artist')]
print(artists)

我想XPath的语法是对的。似乎歌曲与艺术家匹配得很好,尽管艺术家的元素节点是交替的。我做到了:

artists = [x.strip() for x in tree.xpath('//*[@class="chart-row__artist"]/text()')]

前缀//*选择了整个文档,然后与类名匹配,因此它同时包含了“a”元素和“span”元素

相关问题 更多 >

    热门问题