Je suis en train de mettre au rebut une liste d'URL avec le même format html. Voici mon scrapperGestion des exceptions Python TypeError: L'objet 'NoneType' n'est pas appelable
import requests, bs4, csv, json
from pprint import pprint
with open('playerslist.json') as data_file:
data = json.load(data_file)
for i in data['player']:
name = i['player_name']
url = 'https://www.capfriendly.com/players/'+name
r = requests.get(url)
soup = bs4.BeautifulSoup(r.text, 'lxml')
table = soup.find(id="cont_x")
with open(name+".csv", "w", newline='') as team_data:
def parse_td(td):
filtered_data = [tag.text for tag in td.find_all('span', recursive=False)
if 'q' not in tag.attrs['class']]
return filtered_data[0] if filtered_data else td.text;
for tr in table('tr', class_=['column_head', 'odd', 'even']):
row = [parse_td(td) for td in tr('td')]
writer = csv.writer(team_data)
writer.writerow(row)
Le problème est que certains de ne plus exister pages (https://www.capfriendly.com/players/'+name
) l'URL. Ce qui signifie que lorsque je tente de les gratter, je reçois l'erreur suivante
for tr in table('tr', class_=['column_head', 'odd', 'even']):
TypeError: 'NoneType' object is not callable
je pouvais faire en sorte que ma liste d'urls sont tous valides mais j'ai 10000 urls à passer. C'est pourquoi je cherche un moyen de gérer l'exception, de cette façon, si une page n'existe plus, elle est ignorée et l'URL suivante est supprimée.
En outre, s'il existe un moyen plus efficace de stocker les données, veuillez me le faire savoir.