J'ai décidé de garder une trace d'apprentissage de python, alors j'ai commencé Qitta. Puisque mon travail n'est pas une entreprise informatique, python est vraiment un passe-temps ... je veux dire, j'apprends avec intérêt.
En ce moment, je travaille sur l'hygiène alimentaire, alors je me demande si je peux faire quelque chose avec python, alors analysons les données sur les informations de rappel d'aliments! J'ai pensé.
Dans un premier temps, j'ai essayé de créer une base de données d'informations de rappel d'aliments par grattage. La source des données est un site appelé Recall Plus.
food_recall_info.py
from bs4 import BeautifulSoup
import requests
import re
import csv
import time
import pandas as pd
def recalls(url):
res = requests.get(url)
soup = BeautifulSoup(res.text, 'html.parser')
recall_soup = soup.findAll("tr",{"class":{"return","info","apology"}})
campany_list = []
recall_list = []
action_list = []
recall_date = []
for j in range(len(recall_soup)):
#Obtenir le nom de l'entreprise
campany_list.append(recall_soup[j].find("a", href=re.compile("/company/*")).get_text())
#Rappeler les détails
recall_list.append(recall_soup[j].find("a", {"style":"float:left"}).get_text())
#Comment répondre
keyword = re.compile(r'Récupération|Récupération&Rembourser|Récupération&Rembourser/Échange|Récupération&Échange|Rembourser|Échange|点検&Échange|Remarquer|Violation de la loi sur l'étiquetage des prix|excuses|Rembourser/Échange|Envoyer')
action_list.append(re.search(keyword, str(recall_soup[j])).group())
#Date d'accumulation
recall_date.append(recall_soup[j].find("td", {"class":"day"}).get_text().replace("\n ","20"))
return campany_list,recall_list,action_list,recall_date
campany_lists = []
recall_lists = []
action_lists = []
recall_dates = []
for i in range(1,20):
resl = recalls("https://www.recall-plus.jp/category/1?page={}".format(i))
campany_lists.extend(resl[0])
recall_lists.extend(resl[1])
action_lists.extend(resl[2])
recall_dates.extend(resl[3])
recall_df = pd.DataFrame({'Nom de la compagnie':campany_lists,'Rappeler les détails':recall_lists,'Correspondance':action_lists,'Date d'accumulation':recall_dates})
Résultat d'exécution
recall_df.head()
Nom de l'entreprise Détails du rappel Date de correspondance
0 Kobe Bussan Business Supermarket Je veux coller des morceaux de résine mélangés dans certains produits Récupération 2020/03/17
1 Marubun Marubun Soja domestique utilisé Yose tofu Date d'expiration mal étiqueté Collection 2020/03/17
2 Magasin Aeon Hitachi Omiya...Allergène pour tonteki assaisonné de longe de porc(Lait)Affichage manquant Apology 2020/03/18
3 Magasin Tsuruya Karuizawa Délicieux poisson blanc Allergène à la mouche Affichage des ingrédients du lait manquant Récupération 2020/03/16
4 Hatanaka Koiya Hatanaka Koiya Koi Allergène bouilli sucré "Blé" Récupération d'affichage manquante 2020/03/13
Apparemment, je pense qu'il pourrait être stocké dans la trame de données pandas.
Au début, j'ai pensé à chaque fois écrire le listing dans le bloc de données, mais j'ai abandonné car je ne savais pas comment le faire. Tout d'abord, j'ai fait une liste de chaque colonne, puis j'ai essayé de l'intégrer dans les pandas.
Je suis un amateur, donc je me suis souvenu d'une chose et j'ai ajouté une valeur avec append () au début. Cependant, il a été ajouté sous forme de liste et n'a pas pu être importé dans les pandas avec succès.
Après de nombreuses recherches, j'ai trouvé que je pouvais utiliser extend () pour n'ajouter que les valeurs de la liste.
J'ai appris une chose.
Maintenant que j'ai créé les données en toute sécurité, je voudrais analyser les données. Ce qui peut maintenant être analysé avec ces données est (1) Pourcentage de collectes et de retours lors de rappels ② Y a-t-il un moment où des rappels sont susceptibles de se produire?
N'est-ce pas. J'aimerais essayer diverses choses.