[Python] Speichern Sie PDF von Google Colaboratory in Google Drive! -Lass uns Daten für maschinelles Lernen sammeln-

1. Zuallererst

Hallo, das ist HanBei.

Vor kurzem bin ich süchtig nach maschinellem Lernen und Lernen.

"Ich möchte maschinelles Lernen machen, aber welche Art von Ausführungsumgebung kann ich tun?" Ich denke, einige Leute denken das, aber ich werde Google Colaboratory und [Jupyter Notebook] verwenden. ](Https://jupyter.org/) und andere nützliche Tools.

Ich bin allen Ingenieuren zutiefst dankbar, die unser Leben jeden Tag bereichern.

1-1. Zweck

Dieses Mal werde ich mit Google Colaboratory kratzen und die PDF-Daten im Web auf Google Drive herunterladen.

1-2. Ziel (Grund für das Lesen dieses Artikels)

** Wir hoffen, dass dies für diejenigen nützlich ist, die Daten für maschinelles Lernen mithilfe von PDF-Daten im Web erhalten möchten **.

1-3. Achtung

Schaben ist ein Verbrechen, wenn Sie die Verwendung und Dosierung nicht korrekt befolgen.

"Ich möchte kratzen, also mach dir keine Sorgen!" Für diejenigen, die optimistisch oder besorgt sind, empfehlen wir, dass Sie mindestens die beiden folgenden Artikel lesen.

miyabisun: "Stellen Sie auf der Q & A-Website keine Fragen zum Schaben" nezuq: "Liste der Vorsichtsmaßnahmen für das Web-Scraping"

1-4. Zu überprüfende Punkte

Dieser Artikel zeigt Ihnen, wie man kratzt, aber ** wir übernehmen keine Verantwortung **.

Denken Sie selbst und verwenden Sie es mit der richtigen Ethik.

2. Vorbereitung

2-1. Entscheiden Sie, was Sie kratzen möchten

Das Ziel sind diesmal die Daten, die vom Ministerium für Gesundheit, Arbeit und Soziales zu COVID-19 bekannt gegeben wurden.

Aktueller Stand der Neuinfektion mit Coronaviren und Reaktion des Ministeriums für Gesundheit, Arbeit und Soziales (0. Oktober, 2. Verordnungsjahr) , Täglich aktualisiert. Auf dieser Seite befindet sich ein PDF mit dem Titel [Anzahl der positiven PCR-Tests nach Präfektur in Japan (veröffentlicht am 0. Oktober 2020]) (https://www.mhlw.go.jp/content/10906000/000630233.pdf). , Ich möchte dies herunterladen.

2-2. Google Colaboratory verfügbar machen

Wenn Sie kein Google-Konto für die Verwendung von Google Colaboratory erstellt haben, erstellen Sie eines.

So erstellen Sie ein neues Notizbuch ...

  1. Klicken Sie auf Google Colaboratory, um zu beginnen
  2. Erstellen Sie eine neue in Google Drive Referenz: shoji9x9 "Zusammenfassung der Verwendung von Google Colab"

3. Üben

3-1. Importieren der Bibliothek

from bs4 import BeautifulSoup
import urllib
import urllib.request as req
import time
import requests
import os

3-2 Gehen Sie beim Übergang der Seiten zu den gewünschten Daten

Da die gewünschten Daten in mehrere Seiten unterteilt sind, werden wir uns damit befassen.

Zum Beispiel, wenn Sie die Daten für den 9. Mai 2020 wollen ... Da es eine hierarchische Struktur von "Pressemitteilungsmaterial / Pressemitteilungsmaterial / aktuelle Situation einer neuen Coronavirus-Infektion und Reaktion des Ministeriums für Gesundheit, Arbeit und Soziales (9. Mai, 2. Jahr der Verordnung)" hat Ich werde immer mehr von der Seite von tauchen.

Dieses Mal wird die Seite auf Umwegen angegeben. Es gibt auch eine intelligentere Methode. Bitte beziehen Sie sich auch auf diese Methode.


#URL speichern,pr steht für Pressekonferenz
pr_url_list = []

#URL-Generierung von Pressemitteilungsmaterialien nach Jahr und Monat
def get_base_url(year,month):
  #Basis-URL
  base_url = "https://www.mhlw.go.jp/stf/houdou/houdou_list_" + str(year) + "0" + str(month) + ".html"
  res = req.urlopen(base_url)
  soup = BeautifulSoup(res, "html.parser")

  #Geben Sie eine Liste der Materialien für Pressemitteilungen an
  all_text = str(soup.find_all('ul', class_= 'm-listNews'))

  #Der hier erfasste Text wird zeilenweise geteilt und in der Liste gespeichert.
  all_text_list = all_text.split("\n")

  #Lesen Sie die Liste Zeile für Zeile und extrahieren Sie nur die teilweise übereinstimmenden Zeilen
  for text in all_text_list:
      if "Über die aktuelle Situation einer neuen Coronavirus-Infektion und die Reaktion des Ministeriums für Gesundheit, Arbeit und Soziales" in text:
        print("Anzahl der Zeilen: " + str(all_text_list.index(text)) + ", url: " + str(text))

        #Holen Sie sich die URL eine Zeile vor
        pr_url = all_text_list[all_text_list.index(text) - 1]
        #Geben Sie ein bestimmtes Teil an und fügen Sie es in die URL ein
        date_pr_url = pr_url[26:31]

        PR_URL_LIST = "https://www.mhlw.go.jp/stf/newpage_" + date_pr_url + ".html"

        pr_url_list.append(PR_URL_LIST)
        print(PR_URL_LIST)

  #Wenden Sie eine 1-Sekunden-Regel zum Schaben an
  time.sleep(1)

3-3. URL bis Mai 2020 abrufen

Ich weiß nicht, wie ich es klug machen soll, deshalb schaue ich es mir von Januar bis Mai mit einer for-Erklärung an.


#Bereich bis Mai
for month in range(5):
  #Jeden Monat hinzufügen
  month += 1

  #Suchbereich ist nur 2020
  year = 2020

  get_base_url(year, month)

↓ Wenn Sie bisher ausgeführt haben, können Sie die angegebene URL bis Mai überprüfen COVID_19_Colaboratory.png

3-4. PDF-URL abrufen

#Speichert die PDF-URL nach Präfektur für jeden Monat und Tag
date_pt_urls = []
#Speichert die PDF-URL nach Präfektur für jeden Monat und Tag
pdf_urls_march_april = []

#Holen Sie sich die URL für März und April
def march_april_get_pt_url(date_pt):
  date_pt_url = date_pt[19:37]

  PT_PDF_URL = "https://www.mhlw.go.jp/content/" + str(date_pt_url) + ".pdf"
  # print(PT_PDF_URL)

  date_pt_urls.append(PT_PDF_URL)

#Holen Sie sich die URL für Mai (ändern Sie den Namen unterwegs nicht...)
def may_get_pt_url(date_pt):
  date_pt_url = date_pt[19:37]

  PT_PDF_URL = "https://www.mhlw.go.jp/content/" + str(date_pt_url) + ".pdf"
  print(PT_PDF_URL)

  date_pt_urls.append(PT_PDF_URL)
for num in range(len(pr_url_list)):
  print(num)

  #Schauen Sie sich die URL für jeden Tag der Reihe nach an
  PR_URL = pr_url_list[num]
  res = req.urlopen(PR_URL)
  soup = BeautifulSoup(res, "html.parser")

  all_text = str(soup.find_all)

  #Der hier erfasste Text wird zeilenweise geteilt und in der Liste gespeichert.
  all_text_list = all_text.split("\n")

  #Lesen Sie die Liste Zeile für Zeile und extrahieren Sie nur die teilweise übereinstimmenden Zeilen
  for text in all_text_list:
      if "Anzahl der Patientenberichte nach Präfektur in häuslichen Fällen" in text:
         march_april_get_pt_url(text)

  #Lesen Sie die Liste Zeile für Zeile und extrahieren Sie nur die teilweise übereinstimmenden Zeilen
  for text in all_text_list:
      if "Anzahl positiver PCR-Tests nach Präfektur in Japan" in text:
         may_get_pt_url(text)      

  #Wenden Sie eine 1-Sekunden-Regel zum Schaben an
  time.sleep(1)

↓ Sie können die PDF-URL überprüfen, indem Sie bis hier ausführen COVID_19_Colaboratory (1).png

Die gewünschten PDF-Daten sind je nach Tag möglicherweise nicht verfügbar, sodass die erfassten URLs spärlich sind.

3-5. Laden Sie PDF auf Google Drive hoch

#Hängen Sie das Verzeichnis ein, das Sie verwenden möchten
from google.colab import drive
drive.mount('/content/drive')
def download_pdf(url, file_path):
  response = requests.get(url, stream=True)

  #Erfolgreiche Anfrage
  if response.status_code == 200:
    with open(file_path, "wb") as file:
      file.write(response.content)

Überprüfen Sie, ob es heruntergeladen werden kann. Bitte geben Sie den Ordnernamen und den Dateinamen ein, die Sie für XX unten erstellt haben.


download_pdf(url=PT_PDF_URL, file_path="drive/My Drive/Colab Notebooks/〇〇〇/〇〇〇.pdf")

3-6 PDF herunterladen

Bitte geben Sie den Dateinamen für XX unten willkürlich ein.

#Geben Sie das Ziel für die Datenspeicherung an
google_drive_save_dir = "./drive/My Drive/Colab Notebooks/〇〇〇/pdf"

for index, url in enumerate(date_pt_urls):
  file_name = "{}.pdf".format(index)

  print(file_name)
  pdf_path = os.path.join(google_drive_save_dir, file_name)
  print(pdf_path)

  download_pdf(url=url, file_path=pdf_path)

Wenn dies ausgeführt wird, wird das PDF in den angegebenen Ordner hochgeladen.

4. Versuchen Sie es mit Schaben

Dieses Mal habe ich zum ersten Mal versucht zu kratzen, aber es war ziemlich schwierig.

Der HTML-Code der Site ist ... oder das Format des heruntergeladenen PDF ist ...

Normalerweise schreibe ich keinen Front-End-Code, aber es war interessant zu überlegen, wie man Code aus einer neuen Perspektive schreibt.

Nachdem ich so weit gegangen war, hörte ich auf, maschinell zu lernen. Der Grund ist, dass ich später merkte, dass ich nicht die Daten bekommen konnte, die ich wollte (lacht). Dieser Mangel an Planung ...

Also habe ich beschlossen, es für diejenigen zu sehen, die nach diesem Inhalt suchen!

Vielen Dank an alle, die bisher gelesen haben.

Ich wäre Ihnen dankbar, wenn Sie uns Ihre Kommentare und Ratschläge geben könnten ^^

Recommended Posts

[Python] Speichern Sie PDF von Google Colaboratory in Google Drive! -Lass uns Daten für maschinelles Lernen sammeln-
Sammeln von Daten zum maschinellen Lernen
Eine Einführung in Python für maschinelles Lernen
[Python] Sammeln Sie Bilder mit Icrawler für maschinelles Lernen [1000 Blatt]
Laden Sie Daten direkt von der Laufwerks-URL herunter (Google Colaboratory).
Python-Lernnotiz für maschinelles Lernen von Chainer aus Kapitel 2
Vorbereitung zum Starten von "Python Machine Learning Programming" (für macOS)
Python Machine Learning Programming Kapitel 1 bietet Computern die Möglichkeit, aus der Datenzusammenfassung zu lernen
Datensatz für maschinelles Lernen
Sammeln Sie Daten zum maschinellen Lernen, indem Sie aus biobasierten öffentlichen Datenbanken kratzen
Die Verwendung von icrawler zum Sammeln von Daten zum maschinellen Lernen wurde vereinfacht
Wie nutzt man maschinelles Lernen für die Arbeit? 03_Python-Codierungsverfahren
Abrufen von Daten aus der Analyse-API mit Google API Client für Python
Newton-Methode für maschinelles Lernen (von 1 Variablen zu mehreren Variablen)
Python-Lernnotiz für maschinelles Lernen von Chainer Kapitel 10 Einführung in Cupy
<Für Anfänger> Python-Bibliothek <Für maschinelles Lernen>
Python-Lernnotiz für maschinelles Lernen von Chainer Kapitel 9 Einführung in das Scikit-Lernen
[Hinweis] Websites zu KI / maschinellem Lernen / Python [von Zeit zu Zeit aktualisiert]
Feature Engineering für maschinelles Lernen ab Teil 1 Google Colaboratory - Validierung und Diskriminierung von Zähldaten
Lassen Sie uns die kostenlose "Einführung in Python für maschinelles Lernen" bis zum 27. April online stellen
Kopieren Sie Daten von Amazon S3 mit Python (boto) in Google Cloud Storage.
Ich habe mit Python mit dem maschinellen Lernen begonnen (ich habe auch angefangen, in Qiita zu posten). Datenvorbereitung
Verstärken Sie Bilder für maschinelles Lernen mit Python
Verwenden Sie die API-Gruppe A3RT für maschinelles Lernen aus Python
Ich habe Python 3.5.1 installiert, um maschinelles Lernen zu studieren
Warum Python für maschinelles Lernen ausgewählt wird
Python: Vorverarbeitung beim maschinellen Lernen: Datenerfassung
So suchen Sie in Google Colaboratory nach Google Drive
[Shakyo] Begegnung mit Python zum maschinellen Lernen
[Python] Erste Datenanalyse / maschinelles Lernen (Kaggle)
[Python] Webanwendungsdesign für maschinelles Lernen
Python> Ausgaben von 1 bis 100, 501 bis 600> Für CSV
Verwendung von "deque" für Python-Daten
Python: Vorverarbeitung beim maschinellen Lernen: Datenkonvertierung
Laden Sie Bilder mit Python auf Google Drive hoch
Datenerfassung von der Analytics-API mit dem Google API-Client für die Python Part 2-Webanwendung
Ich habe versucht, das Bild zu verarbeiten und zu transformieren und die Daten für maschinelles Lernen zu erweitern
Einführung in IPython (Python2) in Mac OS X-Vorbereitung für den Einstieg in die Theorie des maschinellen Lernens
Richten Sie die Anzahl der Stichproben zwischen Datenklassen für maschinelles Lernen mit Python aus
Python-Lernnotiz für maschinelles Lernen von Chainer Kapitel 11 und 12 Einführung in Pandas Matplotlib
Feature Engineering für maschinelles Lernen Beginnend mit dem 4. Google Colaboratory - Interacting Features
[Python] Einfache Einführung in das maschinelle Lernen mit Python (SVM)
Eine Einführung in maschinelles Lernen für Bot-Entwickler
Maschinelles Lernen ab 0 für theoretische Physikstudenten # 1
[Python] Lesen von Daten aus CIFAR-10 und CIFAR-100
[Python] Fluss vom Web-Scraping zur Datenanalyse
Laden Sie Dateien direkt auf Google Drive herunter (mithilfe von Google Colaboratory).
Laden Sie Dateien mit Lambda (Python) auf Google Drive hoch.
Maschinelles Lernen ab 0 für theoretische Physikstudenten # 2
PDF-Dateien und Websites zum Erlernen von Python 3
Sammeln Sie Bilder für maschinelles Lernen (Bing Search API)
Ich habe mit der maschinellen Vorverarbeitung von Python Data begonnen
progate Python-Lernnotiz (von Zeit zu Zeit aktualisiert)
[Für Anfänger] Einführung in die Vektorisierung beim maschinellen Lernen
Der erste Schritt des maschinellen Lernens ~ Für diejenigen, die versuchen möchten, mit Python zu implementieren ~
Sammeln Sie selbst Bilddaten für maschinelles Lernen (Google Custom Search API Pikachu).
[Von Zeit zu Zeit aktualisiert] Python-Memos, die häufig für die Datenanalyse verwendet werden [N-Division usw.]