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 un
BS4.tag code> instance, de sorte qu'il n'a pas de
Rechercher () 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'?