Je sais que cela peut être une question simple, mais j'ai vraiment besoin d'aide ici.
J'essaie d'extraire les rebonds totaux par jeu de cet objet à soupe. P>
J'ai essayé d'utiliser le code suivant, mais j'ai eu une erreur: p>
import urllib.request
from bs4 import BeautifulSoup
import csv
url = "https://www.basketball-reference.com/players/a/abdulza01.html"
request = urllib.request.Request(url) # create request object
response = urllib.request.urlopen(request)
html = response.read().decode('unicode_escape') # convert to unicode format
soup = BeautifulSoup(html, "html.parser")
table = soup.find('table', attrs={'id': 'per_game'})
results = table.find_all('tr')
for result in results[1:len(results)]:
data = result.find_all('td')
data.find(attrs={'data-stat': 'trb_per_g'}).getText()
data = [<td class="center iz" data-stat="age"></td>,
<td class="left " data-stat="team_id"><a href="/teams/BOS/">BOS</a></td>,
<td class="left " data-stat="lg_id">NBA</td>,
<td class="center iz" data-stat="pos"></td>,
<td class="right " data-stat="g">2</td>,
<td class="right incomplete iz" data-stat="gs"></td>,
<td class="right " data-stat="mp_per_g">12.0</td>,
<td class="right " data-stat="fg_per_g">1.5</td>,
<td class="right " data-stat="fga_per_g">6.5</td>,
<td class="right " data-stat="fg_pct">.231</td>,
<td class="right " data-stat="ft_per_g">1.0</td>,
<td class="right " data-stat="fta_per_g">1.5</td>,
<td class="right " data-stat="ft_pct">.667</td>,
<td class="right " data-stat="orb_per_g">3.0</td>,
<td class="right " data-stat="drb_per_g">4.5</td>,
<td class="right " data-stat="trb_per_g">**7.5**</td>,
<td class="right " data-stat="ast_per_g">1.5</td>,
<td class="right " data-stat="stl_per_g">0.5</td>,
<td class="right " data-stat="blk_per_g">0.5</td>,
<td class="right " data-stat="tov_per_g">1.5</td>,
<td class="right " data-stat="pf_per_g">2.0</td>,
<td class="right " data-stat="pts_per_g">4.0</td>]
3 Réponses :
Je pense que voici la réponse de votre question: belle Soupe: 'Les résultatsset' objet n'a pas d'attribut 'Find_All'? P>
L'objet Resulatset n'a aucun attribut 'trouver'. Ce que vous pouvez faire, c'est accès à chaque élément et utiliser "trouver" pour trouver ce que vous voulez. P>
Salut là-bas, avez-vous une idée de ce qui devrait être la syntaxe correcte? Désolé!
Lorsque vous effectuez une recherche avec Pour rechercher plusieurs éléments, essayez ceci. p> Attribute CODE> Valeurs, vous devez également fournir le nom code> Tag CODE>.
Essayez ceci ci-dessous le code.Si seulement un élément souhaite rechercher Essayez code> Rechercher CODE> Pré> xxx pré>
Bonjour Kajal, merci mais dans ce cas, vous l'avez fait dans un objet Tag d'élément de soupe, qui permet d'appliquer la méthode de recherche? Ma question a déclaré que c'était un objet de résultat, donc je ne peux plus utiliser Find_Allore.
Je pense qu'il serait plus rapide d'utiliser une combinaison de sélecteur CSS à cible par l'ID de table et l'attribut = valeur pour les cellules TD d'intérêt
import requests
from bs4 import BeautifulSoup as bs
import pandas as pd
url = "https://www.basketball-reference.com/players/a/abdulza01.html"
soup = bs(requests.get(url).content, 'lxml')
data = [item.text for item in soup.select('#per_game [data-stat=trb_per_g]')]
df = pd.DataFrame(data)
df.rename(columns=df.iloc[0], inplace = True)
df.drop(df.index[0], inplace = True)
print(df)
df.to_csv(r'C:\Users\Users\Desktop\Data.csv', sep=',', encoding='utf-8',index = False )
C'est parce que l'objet
data code> n'est pas unBS4.tag code> instance, de sorte qu'il n'a pas deRechercher () code> méthode. Pouvez-vous partager le code qui produit l'objet code> data code>?Pourquoi ne pas adresser la demande de J.Taylor ci-dessus?
OK, bien sûr! S'il vous plaît voir la question modifiée
Est-ce que cela répond à votre question? Belle soupe: "Les résultats" n'a aucun attribut 'Find_All'?