0
votes

Beautiful de l'erreur Python en utilisant .Find

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>]


4 commentaires

C'est parce que l'objet data n'est pas un BS4.tag instance, de sorte qu'il n'a pas de Rechercher () méthode. Pouvez-vous partager le code qui produit l'objet data ?


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'?


3 Réponses :


1
votes

Je pense que voici la réponse de votre question: belle Soupe: 'Les résultatsset' objet n'a pas d'attribut 'Find_All'?

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.


1 commentaires

Salut là-bas, avez-vous une idée de ce qui devrait être la syntaxe correcte? Désolé!



0
votes

Lorsque vous effectuez une recherche avec Attribute Valeurs, vous devez également fournir le nom Tag . Essayez ceci ci-dessous le code.Si seulement un élément souhaite rechercher Essayez Rechercher Pré> xxx

Pour rechercher plusieurs éléments, essayez ceci. xxx


1 commentaires

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.



0
votes

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 )


0 commentaires