[PYTHON] Scraping Shizuokas offizielle GoToEat-Website und Auflistung der Geschäfte, die für die Izu-Kampagne bestimmt sind

Shizuoka verkauft zwei Arten von Essenskarten.

Rotes Fuji-Ticket Blaues Fuji-Ticket
Geldbetrag 1 Buch 8,000 Yen(10,000 Yen verfügbar) 1 Buch 10,000 Yen(12,500 Yen verfügbar)
URL https://premium-gift.jp/fujinokunigotoeat/ https://gotoeat-shizuoka.com/
Roboter Metatag index,follow noindex, follow

Der Grund, warum ich mich für das Scrapen entschieden habe, ist, dass keine der beiden Sites vom Zielspeicher in der Liste angezeigt werden kann. Der Käufer eines Essenstickets muss die Zielgeschäfte nach Namen usw. eingrenzen oder den Pager-Link mehrmals ändern. Für die Überprüfung des Roboter-Meta-Tags auf der offiziellen Website ist das blaue Fuji-Ticket kein Index, sodass nur das rote Fuji-Ticket als Ziel ausgewählt wird.

Web Scraping

urllib Es gibt verschiedene Methoden und Bibliotheken für das Web-Scraping. Zuerst habe ich mich für die Urllib-Bibliothek entschieden, die viele Informationen enthält und einfach zu sein scheint.

    #Akquisitionsbeispiel
    import urllib.request
    html = urllib.request.urlopen(url).read()

Dieselbe Seite wird jedoch nur angezeigt, weil die Suchbedingungen nicht angegeben sind. Selbst wenn dieselbe URL im Browser geöffnet wird, unterscheiden sich die angezeigten Inhalte zwischen der neuen und der zweiten. Anscheinend wird die Sitzung beurteilt.

Selenium Aufgrund verschiedener Untersuchungen war dies mit Selen möglich. Selenium ist eine Testautomatisierungsbibliothek für Webanwendungen, mit der Sie den Browser programmgesteuert bedienen können.

    #Akquisitionsbeispiel
    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    driver = webdriver.Chrome('chromedriver',options=options)
    driver.get(url)
    html = driver.page_source.encode('utf-8')

Im Fall von Google Colaboratory können Sie es ausführen, indem Sie Folgendes ausführen.

Installation

    !apt-get update
    !apt install chromium-chromedriver
    !cp /usr/lib/chromium-browser/chromedriver /usr/bin
    !pip install selenium

Quelle

    import pandas as pd
    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    #Führen Sie den Browser im Hintergrund aus
    options = webdriver.ChromeOptions()
    options.add_argument('--headless')
    options.add_argument('--no-sandbox')
    options.add_argument('--disable-dev-shm-usage')
    area_nm = 'Izu Stadt'
    df_all = pd.DataFrame(columns=['area_nm', 'shop_nm'])
    #Starten Sie den Browser
    driver = webdriver.Chrome('chromedriver',options=options)
    driver.implicitly_wait(10)
    #Einstiegsbild
    driver.get("https://premium-gift.jp/fujinokunigotoeat/use_store")
    driver.implicitly_wait(10)
    print(driver.current_url)
    #Suchausführung
    driver.find_element_by_id('addr').send_keys(area_nm)
    driver.find_element_by_class_name('store-search__submit').click()
    driver.implicitly_wait(10)
    print(driver.current_url)
    shouldLoop = True
    while shouldLoop is True:
      #Suchergebnisse
      current_url = driver.current_url
      shop_nm_list = driver.find_elements_by_class_name("store-card__title")
      for idx, shop_item in enumerate(shop_nm_list):
        row = pd.Series( [ area_nm, shop_item.text ], index=df_all.columns )
        df_all = df_all.append(row, ignore_index=True )
        print(shop_item.text)
      
      #zur nächsten Seite
      link_list = driver.find_elements_by_class_name('pagenation__item')
      for link_item in link_list:
        if link_item.text == "Nächster":
          link_item.click()
          driver.implicitly_wait(10)
          print(driver.current_url)
      
      shouldLoop = False
      #Wenn keine Seite angezeigt werden soll, beenden Sie das Programm
      if current_url != driver.current_url:
          shouldLoop = True
    driver.close()
    #CSV-Ausgabe
    df_all.to_csv(f'shoplist.csv', index=False)

Schließlich

Ich hoffe, dass die Websites für rote Fuji-Tickets und blaue Fuji-Tickets verbessert werden. Bei der Suche wird nur Izu City als Schlüsselwort verwendet, Sie können jedoch die Bedingungen ändern.

Recommended Posts

Scraping Shizuokas offizielle GoToEat-Website und Auflistung der Geschäfte, die für die Izu-Kampagne bestimmt sind
Ordnen Sie die für die GoToEat-Kampagne bestimmten Geschäfte zu und genießen Sie sie
Scraping Shizuokas offizielle GoToEat-Website
Scraping Mitgliederbilder von der offiziellen Website der Sakamichi Group