Je souhaite extraire uniquement le nom du magasin de la liste des noms de magasin de goToEat et l'afficher au format CSV.
Beautifulsoup requests python3 windows10
J'utilise.
J'ai pu extraire le nom du magasin incluant la balise sous forme de liste en spécifiant la balise html avec le code suivant
urlName = "https://premium-gift.jp/eatosaka/use_store?events=page&id={}&store=&addr=&industry=".format(PageNumber)
dataHTML = requests.get(urlName)
soup = BeautifulSoup(dataHTML.content, "html.parser")
elems = soup.select('h3.store-card__title')
Remplacez et supprimez les informations supplémentaires et exportez-les au format CSV. On m'a dit que i.text peut être utilisé pour obtenir des informations textuelles.
with open(r'C:\Users\daisuke\Desktop\python\eat.csv', 'w') as f:
writer = csv.writer(f)
for i in elems:
"""
i = str(i)
i = i.replace('<h3 class="store-card__title">', '')
i = i.replace('</h3>', '')
i = i.replace(' ', ' ')
i = i.replace(' ', ' ')
"""
print(i.text)
try:
writer.writerow([i.text])
except:
writer.writerow(['error'])
L'erreur suivante se produit
Live Ise Ebi Cuisine Nakanogo Osaka Station Front Third Building Store
Traceback (most recent call last):
File "C:\Users\daisuke\Desktop\python\go_to_eat.py", line 24, in <module>
writer.writerow(i)
UnicodeEncodeError: 'cp932' codec can't encode character '\xa0' in position 20: illegal multibyte sequence
Par conséquent, nous avons remplacé l'espace sans interruption par un espace demi-largeur comme indiqué ci-dessous. Pour ainsi dire, ce n'est pas bon car c'est une méthode symptomatique.
for i in elems:
i = str(i)
i = i.replace('<h3 class="store-card__title">', '')
i = i.replace('</h3>', '')
i = i.replace(' ', ' ')
i = i.replace(' ', ' ')
print(i)
try:
writer.writerow([i])
except:
writer.writerow(['error'])
La meilleure chose à faire est peut-être de spécifier un code de caractère capable d'exprimer correctement le caractère en question. Si vous donnez l'argument de mot-clé d'encodage à la fonction open () comme indiqué ci-dessous, vous pouvez directement spécifier le code de caractère utilisé dans la conversion automatique, alors faites-le UTF-8 etc. qui peut exprimer des caractères Unicode. C'est très bien.
Les caractères sont déformés lorsque j'ouvre le fichier CSV, mais ce n'est pas grave si je change le code de caractère.
with open(r'C:\Users\daisuke\Desktop\python\eat.csv', 'w', encoding='utf-8') as f:
Cependant, lors de la lecture à partir de CSV, une colonne vide inutile a été ajoutée comme indiqué ci-dessous. ~~ Je ne sais toujours pas pourquoi. ~~ Une personne détaillée m'a dit dans les commentaires et l'a résolu! Je vous remercie
['Wolfgang Steak House par Wolfgang Zwinner Osaka']
[]
['Vignoble']
[]
['Sumikuni Rotating Chicken Cuisine Lucua Store']
Recommended Posts