即使元素存在且find()对页面上的其他元素有效,但它仍然不返回任何元素。 您所在的位置:网站首页 3dmax论坛社区 即使元素存在且find()对页面上的其他元素有效,但它仍然不返回任何元素。

即使元素存在且find()对页面上的其他元素有效,但它仍然不返回任何元素。

2023-04-14 21:39| 来源: 网络整理| 查看: 265

我正在尝试使用PythonandBeautifulSoup4创建一个web刮刀,以便从Billboard热门100图表https://www.billboard.com/charts/hot-100/中获取数据。

由于某些原因,find()/findAll()函数无法获得#1歌曲的艺术家。但他们的工作是获得#1歌曲的标题,以及一切从#2-#100,所以我不知道我做错了什么。

正在返回None (或使用findAll时返回一个空列表)的代码:

# GET #1 ARTIST (CURRENTLY NOT WORKING) topArtist = soup.find("p", {"class": "c-tagline a-font-primary-l a-font-primary-m@mobile-max lrv-u-color-black u-color-white@mobile-max lrv-u-margin-tb-00 lrv-u-padding-t-025 lrv-u-margin-r-150"})

对于#1的艺术家/歌曲,HTML标记是不同的,因此我使用的语句与其他99首歌曲不同。但是,由于我在第一首歌,我遵循相同的格式,我不知道为什么它不工作。

这是HTML标签(我想得到“玻璃动物”):

Glass Animals

这是我2100个职位的工作代码:

from bs4 import BeautifulSoup import requests url = "https://www.billboard.com/charts/hot-100/" result = requests.get(url) soup = BeautifulSoup(result.text, "html.parser") # GET ARTISTS 2-100 artist = soup.findAll("span", {"class": "c-label a-no-trucate a-font-primary-s lrv-u-font-size-14@mobile-max u-line" "-height-normal@mobile-max u-letter-spacing-0021 lrv-u-display-block a-" "truncate-ellipsis-2line u-max-width-330 u-max-width-230@tablet-only" }) for i in range(99): artist_list.append(artist[i].text) # GET #1 SONG topSong = soup.find("a", {"href": "#", "class": "c-title__link lrv-a-unstyle-link"}) song_list.append(topSong.text) # GET SONGS 2-100 song = soup.findAll("h3", {"class": "c-title a-no-trucate a-font-primary-bold-s u-letter-spacing-0021 lrv-u-font-size" "-18@tablet lrv-u-font-size-16 u-line-height-125 u-line-height-normal@mobile-max " "a-truncate-ellipsis u-max-width-330 u-max-width-230@tablet-only", "id": "title-of-a-story"}) for i in range(99): song_list.append(song[i].text)

我找遍了所有的地方,找不到修复它的方法,使用selenium并没有为我做任何改变。任何帮助都将不胜感激。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有