gpt4 book ai didi

python - 为从网站抓取数据添加的每个项目添加对象

转载 作者:行者123 更新时间:2023-12-01 08:50:51 25 4
gpt4 key购买 nike

我正在尝试从网站检索数据并添加每一行数据和对象,我是Python新手,我显然错过了一些东西,因为我只能获取1个对象,我试图获取的是所有对象我按键值对排序:

import urllib.request
import bs4 as bs

url = 'http://freemusicarchive.org/search/?quicksearch=drake/'
search = ''
req = urllib.request.Request(url, headers={'User-Agent': 'Mozilla/5.0'})
html = urllib.request.urlopen(req).read()
soup = bs.BeautifulSoup(html, 'html.parser')
tracks_info = [{}]

spans = soup.find_all('span', {'class': 'ptxt-artist'})
for span in spans:
arts = span.find_all('a')
for art in arts:
print(art.text)

spans = soup.find_all('span', {'class': 'ptxt-track'})
for span in spans:
tracks = span.find_all('a')
for track in tracks:
print(track.text)

for download_links in soup.find_all('a', {'title': 'Download'}):
print(download_links.get('href'))

for info in tracks_info:
info.update({'artist': art.text})
info.update({'track': track.text})
info.update({'link': download_links.get('href')})



print(info)

我未能为从网站获得的每个元素添加一个对象,我显然做错了什么\或没有做,任何帮助将不胜感激!

最佳答案

您可以使用稍微不同的结构和语法,如下所示。

我使用 contains CSS 类选择器来检索信息行,因为每个轨道的 id 都不同

enter image description here

div[class*="play-item gcol gid-Electronic tid-"]的CSS选择器组合查找 class 属性的 div 元素,其值包含 play-item gcol gid-Electronic tid-

然后,根据类名选择感兴趣的各个,并使用后代 css 选择器作为最终下载链接的 a 标记元素。

import urllib.request
import bs4 as bs
import pandas as pd

url = 'http://freemusicarchive.org/search/?quicksearch=drake/'
req = urllib.request.Request(url, headers={'User-Agent': 'Mozilla/5.0'})
html = urllib.request.urlopen(req).read()
soup = bs.BeautifulSoup(html, 'html.parser')

tracks_Info = []
headRow = ['Artist','TrackName','DownloadLink']

for item in soup.select('div[class*="play-item gcol gid-electronic tid-"]'):
tracks_Info.append([item.select_one(".ptxt-artist").text.strip(), item.select_one(".ptxt-track").text, item.select_one(".playicn a").get('href')])

df = pd.DataFrame(tracks_Info,columns=headRow)

print(df)

关于python - 为从网站抓取数据添加的每个项目添加对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53139238/

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