[PYTHON] Gratter la liste des magasins membres Go To EAT dans la préfecture de Niigata et la convertir en CSV

A été publié la dernière fois

Convertir le PDF de la liste des magasins membres Go To EAT dans la préfecture de Niigata en CSV https://qiita.com/barobaro/items/74fb5bdedbf1ae7267a0

Impossible de trouver le PDF, alors créez une liste en grattant

Grattage

import re
import time

import requests
from bs4 import BeautifulSoup

url = "https://niigata-gte.com/shop/"

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"
}

result = []

while True:

    r = requests.get(url, headers=headers)
    r.raise_for_status()

    soup = BeautifulSoup(r.content, "html.parser")

    for shop in soup.select("div#result > div.cont"):

        data = {}

        data["Code revendeur"] = (
            shop.select_one("div.no").get_text(strip=True).split(":", 1)[-1]
        )

        span = shop.select("div.tag > span")

        data["surface"] = span[0].get_text(strip=True)
        data["Genre"] = span[1].get_text(strip=True)

        if len(span) > 2:
            temp = {i.get("alt"): "○" for i in span[2].select("img")}
            data.update(temp)

        h4 = shop.select_one("h4")

        data["Nom du magasin"] = h4.get_text(strip=True)

        if h4.select_one("a"):

            link = h4.a.get("href")

            if link:
                data["page d'accueil"] = link

        p_add = shop.select_one("p.add").contents

        postcode, address = p_add[0].split(sep=None, maxsplit=1)

        #Extraire la latitude / longitude du lien google map
        gps = re.search(r"(?<=@)(.+?),(.+?)(?=,\d{1,2}z)", p_add[1].a.get("href"))

        if gps:
            data["latitude"] = float(gps.group(1))
            data["longitude"] = float(gps.group(2))

        data["Code postal"] = postcode.strip()
        data["emplacement"] = address.strip()

        data["numéro de téléphone"] = shop.select_one("p.tel").get_text(strip=True)

        result.append(data)

    tag = soup.select_one("li.next")

    if tag:

        m = re.search("https://niigata-gte.com/shop/page/\d+/", tag.a.get("onclick"))

        if m:
            url = m.group(0)

    else:
        break

    time.sleep(3)

result

Convertir en CSV

import pandas as pd

df = pd.DataFrame(result)

df.index += 1

df.to_csv("niigata.csv", encoding="utf_8_sig")

Recommended Posts

Gratter la liste des magasins membres Go To EAT dans la préfecture de Niigata et la convertir en CSV
Gratter la liste des magasins membres Go To EAT dans la préfecture de Fukuoka et la convertir en CSV
Scraping Go To EAT membres magasins dans la préfecture d'Osaka et conversion au format CSV
Convertir le PDF des magasins membres Go To EAT de la préfecture d'Ishikawa en CSV
Convertir le PDF des magasins disponibles de Go To EAT dans la préfecture de Kagoshima en CSV
Convertir le PDF de la liste des magasins membres Go To EAT dans la préfecture de Kumamoto en CSV
Convertir le PDF de la préfecture de Chiba Aller à la liste des magasins des membres EAT en CSV (commande)
Convertir le PDF de la liste des concessionnaires de la campagne Go To Eat Hokkaido en CSV
Prédisez la quantité d'énergie utilisée en 2 jours et publiez-la au format CSV
L'histoire de la recherche d'un magasin BOT (AI LINE BOT) pour Go To EAT dans la préfecture de Chiba (1)
[Python] Précautions lors de l'acquisition de données en grattant et en les mettant dans la liste
Même dans le processus de conversion de CSV en délimiteur d'espace, essayez sérieusement de séparer les entrées / sorties et les règles
Lisez le fichier csv et affichez-le dans le navigateur
Trébucher lors de la conversion d'une liste bidirectionnelle en JSON dans Go
Scraping PDF du statut des personnes testées positives dans chaque préfecture du ministère de la Santé, du Travail et du Bien-être social
Obtenez de manière récursive la liste Excel dans un dossier spécifique avec python et écrivez-la dans Excel.
Grattage du fichier Excel de la liste des magasins gérant des coupons communs régionaux
Je l'ai écrit en langage Go pour comprendre le principe SOLID
[Python] Le rôle de l'astérisque devant la variable. Divisez la valeur d'entrée et affectez-la à une variable
Il est étonnamment difficile d'obtenir une liste de la dernière date et heure de connexion des espaces de travail
Créez une fonction pour obtenir le contenu de la base de données dans Go
[Python / Jupyter] Traduisez le commentaire du programme copié dans le presse-papiers et insérez-le dans une nouvelle cellule.
Utilisez Cloud Dataflow pour modifier dynamiquement la destination en fonction de la valeur des données et enregistrez-la dans GCS
Comparer la grammaire de base de Python et Go d'une manière facile à comprendre
Celui qui divise le fichier csv, le lit et le traite en parallèle
[Linux] Une commande pour obtenir une liste des commandes exécutées dans le passé
Accédez à l'API de classement Rakuten pour enregistrer le classement de n'importe quelle catégorie au format CSV
Convertir le PDF d'un nouveau cas d'épidémie corona dans la préfecture d'Aichi en CSV
Je souhaite lire le CSV ligne par ligne lors de la conversion du type de champ (tout en affichant la barre de progression) et le traiter.
Comment enregistrer les informations de point caractéristique de l'image dans un fichier et l'utiliser pour la mise en correspondance
Une histoire sur un ingénieur qui a remarqué l'émo de la cryptographie et tente de l'implémenter en Python
Trouvez-le dans la file d'attente et modifiez-le
Différentes façons de lire la dernière ligne d'un fichier csv en Python
Comment passer le résultat de l'exécution d'une commande shell dans une liste en Python
traitement (python) Diagramme les coordonnées de la liste Spécifiez le nombre de fois dans draw ()
Comment réaliser quelque chose comme une liste de void * (ou de type de variante) dans Go?
Je suis tombé sur un code de caractère lors de la conversion de CSV en JSON avec Python
[Python] Comment nommer les données de table et les sortir avec csv (méthode to_csv)
Utilisez Pillow pour rendre l'image transparente et en superposer une partie seulement
Gratter les données pluviométriques de l'Agence météorologique et les afficher sur M5Stack
[Python] Analyser le dossier, y compris les sous-dossiers → Exporter la liste des fichiers au format CSV
Je souhaite voir une liste de fichiers WebDAV dans le module Requêtes
Comment obtenir une liste de fichiers dans le même répertoire avec python