Bonjour. Je travaille comme comptable dans une entreprise informatique. Je travaille pour une société informatique, je souhaite donc utiliser la programmation dans mon travail de back-office ...! J'ai essayé de toucher Python avec ce sentiment.
--Les personnes qui veulent en savoir plus sur le grattage ――Les gens qui recherchent quelque chose qu'ils peuvent faire avec un peu de programmation
―― Que pouvez-vous faire avec le grattage? ――Comment fonctionne le grattage?
** Toutes les informations peuvent être extraites et traitées ** à partir du HTML acquis. Plus précisément, vous pouvez utiliser le grattage pour ce faire.
--Travail automatique d'accès au même site Web tous les jours et de publication d'informations dans un fichier csv --Téléchargez toutes les images frappées avec un mot-clé spécifique sur SNS --Créez une liste de ventes en extrayant les entreprises qui s'appliquent à un mot-clé spécifique
Grosso modo ** Acquisition d'informations sur le site → Extraction d'informations → Sortie des résultats ** Il y a 3 étapes.
Dans cet article, je vais vous montrer comment utiliser Python pour le scraping. Cette fois, j'ai utilisé les deux suivants.
--BeautifulSoup bibliothèque (extraction d'informations, sortie de résultats) --Un module appelé urllib (acquisition d'informations sur le site)
Plus précisément, le traitement suivant est effectué.
Lors de la spécification d'éléments HTML, des méthodes de recherche et de sélection de type sont fournies. Cette fois, nous nous concentrerons sur la recherche de méthodes.
--find (): renvoie un seul élément --findAll (): renvoie une liste d'éléments qui remplissent les conditions
Jetons un coup d'œil à l'échantillon immédiatement.
① Téléchargez python https://www.javadrive.jp/python/install/index1.html
② Installez une belle soupe Il peut être installé avec pip.
$ pip install beautifulsoup4
③ Installation d'urllib Cela peut également être installé avec pip.
$ pip install urllib3
J'essaierai d'obtenir le titre de notre page d'accueil.
sample.py
import urllib.request #urllib disponible
from bs4 import BeautifulSoup #Belle soupe disponible
r = urllib.request.urlopen(‘https://www.is-tech.co.jp/’) #Obtenir des informations Obtenir le code HTML de la page à traiter
html = r.read().decode('utf-8', 'ignore') #HTML utf-Convertir en 8 et lire
parser = "html.parser" #Spécifiez la destination des informations en HTML
soup = BeautifulSoup(html, parser) #Achèvement de l'objet BeautifulSoup
title = soup.find("title").text #Spécifiez les caractères inclus dans la balise de titre en HTML comme cible d'extraction
print(title) #Afficher les caractères inclus dans la balise de titre
J'ai pu l'extraire.
Supposons que vous ayez un site Web fictif comme celui de l'image ci-dessous. Il s'agit d'un site où les informations financières des sociétés cotées fictives sont résumées sur chaque page. Les ventes des 3 dernières années sont extraites pour chaque entreprise et sorties au format csv. L'URL est https://www.example.com/NNNN.
example.com/NNNN.html
<!DOCTYPE html>
</html>
<html>
<head>
<meta charset="utf-8">
<title>L'information financière</title>
</head>
<body>
<h1 class="company">Hogehoge Co., Ltd.</h1>
<table class="information">
<tr>
<td> </td>
<td>Premier mandat</td>
<td>Il y a 2 termes</td>
<td>Il y a 3 termes</td>
</tr>
<tr>
<td>montant des ventes</td>
<td>1,200 millions de yens</td>
<td>1,100 millions de yens</td>
<td>1,000 millions de yens</td>
</tr>
<tr>
<td>Bénéfice ordinaire</td>
<td>240 millions de yens</td>
<td>220 millions de yens</td>
<td>200 millions de yens</td>
</tr>
<tr>
<td>Revenu net</td>
<td>120 millions de yens</td>
<td>110 millions de yens</td>
<td>100 millions de yens</td>
</tr>
</table>
</body>
Ajoutez l'arrangement suivant à l'exemple du titre extrait de la page d'accueil précédemment.
--Répéter le traitement du code de titres à 4 chiffres (1000 à 9999)
sample2.py
import urllib.request
from bs4 import BeautifulSoup
import csv #Traitement lié au CSV disponible
import time #Possibilité de suspendre le traitement
class Scraper:
def __init__(self, site, code): #Créer une classe
self.site = site
self.code = code
def scrape(self): #Créer une instance
url = str(self.site) + str(self.code) #URL d'entreprise
r = urllib.request.urlopen(url)
html = r.read().decode('utf-8', 'ignore')
parser = "html.parser"
soup = BeautifulSoup(html, parser) #Achèvement de l'objet soupe
company = soup.find("h1") #Obtenir le nom de l'entreprise
if "Page d'informations sur l'entreprise introuvable" in company.text: #S'il n'y a pas de société avec le code des valeurs mobilières applicable, aucun traitement ne sera effectué.
pass
else: #Autrement
table = soup.find("table") #Tableau avec informations financières pour les 3 derniers trimestres
data = table.findAll("td") #Spécifiez toutes les tables avec des balises td
sales = data[5].text.split('Un million de yens')[0] #Ventes du trimestre précédent(=6ème balise td dans les données)
sales_two_years_ago = data[6].text.split('Un million de yens')[0] #Ventes il y a deux trimestres(=7ème balise td dans les données)
sales_three_years_ago = data[7].text.split('Un million de yens')[0] #Ventes il y a 3 mois(=8e balise td dans les données)
row = [code, company, sales, sales_two_years_ago, sales_three_years_ago] #Listé pour la sortie vers csv
with open('test.csv', 'a', newline ='') as f: #Exporter vers csv
writer = csv.writer(f)
writer.writerow(row)
time.sleep(5) #Suspendre le traitement pendant 5 secondes
source = "https://www.example.com/" #Partie commune de l'URL
for i in range(1000, 10000): #Traitement itératif pour les codes titres 1000 à 9999
Scraper(source, i).scrape()
De cette façon, toutes les informations de l'entreprise peuvent être sorties vers csv.
J'ai créé le code pour gratter Yahoo! Finance pour automatiser mon entreprise, mais c'était interdit par les conditions d'utilisation ... Lorsque vous utilisez le scraping, veuillez ** vérifier les conditions d'utilisation du site Web à l'avance **. Selon le site, l'API peut être ouverte au public, il existe donc également un moyen d'utiliser l'API pour le traitement.
Recommended Posts