gpt4 book ai didi

python - 使用 Python Beautifulsoup 抓取 html 文本和图像链接

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

我是 Python 的新手,想使用 BeautifulSoup 从这个 URL 中抓取表格:http://www.espn.com/college-sports/basketball/recruiting/databaseresults?firstname=&lastname=&class=2007&starsfilter=GT&stars=0&ratingfilter=GT&rating=&positionrank=&sportid=4294967265&collegeid=&conference=&visitmonth=&visityear=&statuscommit=Commitments&statusuncommit=Uncommited&honor=&region=&state=&height=&weight=

到目前为止,我已经想出了如何为每个玩家的行提取表格数据,以及在每行中指向学校 Logo 的链接。但是,我无法将两者结合起来。我想提取每个玩家的表格数据(下面代码中的 player_data)以及他们相应的学校 Logo 图像链接(logo_links),并将其合并为一行保存的 CSV 中的每个玩家。

以下是我目前所拥有的。预先感谢您的帮助。

#! python3
# downloadRecruits.py - Downloads espn college basketball recruiting database info

import requests, os, bs4, csv
import pandas as pd

# Starting url (class of 2007)
url = 'http://www.espn.com/college-sports/basketball/recruiting/databaseresults?firstname=&lastname=&class=2007&starsfilter=GT&stars=0&ratingfilter=GT&rating=&positionrank=&sportid=4294967265&collegeid=&conference=&visitmonth=&visityear=&statuscommit=Commitments&statusuncommit=Uncommited&honor=&region=&state=&height=&weight='


# Download the page
print('Downloading page %s...' % url)
res = requests.get(url)
res.raise_for_status()

# Creating bs object
soup = bs4.BeautifulSoup(res.text, "html.parser")

# Get the data
data_rows = soup.findAll('tr')[1:]
type(data_rows)

player_data = [[td.getText() for td in data_rows[i].findAll('td')] for i in range(len(data_rows))]

logo_links = [a['href'] for div in soup.find_all("div", attrs={"class": "school-logo"}) for a in div.find_all('a')]


# Saving only player_data
with open('recruits2.csv', 'w') as f_output:
csv_output = csv.writer(f_output)
csv_output.writerows(player_data)

最佳答案

我会做这样的事情。
原因 1:您不必在 HTML 中查找两次内容。
原因 2:遵循原因 1,您不必再次运行循环。

player_data = []
for tr in data_rows:
tdata = []
for td in tr:
tdata.append(td.getText())

if td.div and td.div['class'][0] == 'school-logo':
tdata.append(td.div.a['href'])

player_data.append(tdata)

小解释-
主要是,我没有使用列表理解,因为 if block 在 HTML 中查找具有所需类名的 div block ,如果是,它会附加到它在 tr 标记中收集的数据列表。

关于python - 使用 Python Beautifulsoup 抓取 html 文本和图像链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45653935/

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