[PYTHON] Probieren Sie jetzt Web Scraping aus und erhalten Sie Lotterie-6-Daten

Ich habe gehört, dass Web-Scraping ohne Server kostenlos durchgeführt werden kann, und habe es ausprobiert. Wenn es kein Thema gibt, werde ich nicht motiviert sein, also werde ich dieses Mal die Daten von Lotto 6 erfassen, damit ich auch nur ein wenig motiviert werden kann. Ist es wirklich zufällig? Ich habe es überprüft.

colab Registrieren Sie sich zunächst in colab und wählen Sie "Datei" → "Python3-Notizbuch". Ändern Sie die Hardware auf GPU

Jedes Mal, wenn Sie colab schließen, verlieren Sie alles, was Sie eingegeben haben. Sie müssen es daher jedes Mal installieren.

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

!pip install selenium
!pip install beautifulsoup4

Kratzteil

Ich habe viel recherchiert, aber es hat nicht funktioniert Der Code wurde unter Bezugnahme auf hier korrigiert. Ich habe mich für den automatischen Betrieb von Chrome entschieden.

import time
import random
import pandas as pd
from selenium import webdriver
+ from selenium.webdriver.chrome.options import Options
from bs4 import BeautifulSoup
 
#URL der Mizuho Bank-Seite, auf der die Gewinnzahl von Lotto 6 veröffentlicht wird
loto_url1 = 'https://www.mizuhobank.co.jp/retail/takarakuji/loto/backnumber/loto6' #1. bis 460 ..
loto_url2 = 'https://www.mizuhobank.co.jp/retail/takarakuji/loto/backnumber/detail.html?fromto=' #Nach dem 461. Mal
num = 1
 
main_num_list = [] #Liste zum Speichern von 6 Ziffern dieser Nummer
bonus_num_list = [] #Liste zum Speichern von Bonusnummern


- #Verwenden Sie PhantomJS über Selen
- #driver = webdriver.PhantomJS()
+ #Starten Sie den Browser im Headless-Modus (Modus, der im Hintergrund ausgeführt wird), zeigen Sie die Website an, rufen Sie das generierte HTML ab und verwenden Sie Beautiful Soup+sauber.
+ options = webdriver.ChromeOptions()
+ #Verpflichtend
+ options.add_argument('--headless')
+ options.add_argument('--disable-gpu')
+ options.add_argument('--no-sandbox')
+ #Fehlertoleranz
+ options.add_argument('--ignore-certificate-errors')
+ options.add_argument('--allow-running-insecure-content')
+ options.add_argument('--disable-web-security')
+ #Funktionen, die bei Headless möglicherweise nicht benötigt werden
+ options.add_argument('--disable-desktop-notifications')
+ options.add_argument("--disable-extensions")
+ #Sprache
+ options.add_argument('--lang=ja')
+ #Aufhellen, ohne Bilder zu laden
+ options.add_argument('--blink-settings=imagesEnabled=false')
+ driver = webdriver.Chrome('chromedriver',options=options)
while num <= 1341:
  
  #URL der Gewinnerseite vom 1. bis zum 460 ..
  if num < 461:
    url = loto_url1 + str(num).zfill(4) + '.html'
  #Ab 461. Mal URL der Gewinnerseite
  else:
    url = loto_url2 + str(num) + '_' + str(num+19) + '&type=loto6'
  
  #Holen Sie sich die entsprechende Seite mit PhantomJS
  driver.get(url)
- #time.sleep(2) #Zeit zum Laden der Javascript-Seite
+ #
+ time.sleep(5)
  html = driver.page_source.encode('utf-8')
  soup = BeautifulSoup(html, "html.parser")
  print(soup.title)
 
  #Holen Sie sich den Tisch mit der Gewinnzahl von Lotto 6
  table = soup.find_all("table")
  del table[0]
 
  for i in table:
    #Erwerb dieser Nummer
    main_num = i.find_all("tr")[2].find("td")
    main_num_list.append(main_num.string.split(" "))
 
    #Holen Sie sich Bonusnummern
    bonus_num = i.find_all("tr")[3].find("td")
    bonus_num_list.append(bonus_num.string)
    
  num += 20 #Addiere 20 zu num, um zur nächsten Seite zu gelangen
  time.sleep(random.uniform(1, 3)) #Stoppen Sie den Code für 1-3 Sekunden, um Dos-Angriffe zu vermeiden
 
#Ausgabe mit csv
df = pd.DataFrame(main_num_list, columns = ['main1', 'main2', 'main3', 'main4', 'main5', 'main6'])
df['bonus'] = bonus_num_list
df.index = df.index + 1
df.to_csv('loto6.csv')

Wenn dieser Vorgang abgeschlossen ist, sollte sich "loto6.csv" auf der Registerkarte "Datei" befinden und wird beim Aktualisieren angezeigt.

Schauen Sie sich die Daten in der Grafik an

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

df = pd.read_csv('loto6.csv') #Holen Sie sich den Header als Header
df = df.drop("Unnamed: 0", axis=1) #Löschen Sie die erste Spalte

nums_all = df[['main1','main2','main3','main4','main5','main6','bonus']]

plt.rcParams['figure.figsize'] = (8, 6)#Standardgröße für nachfolgende Abbildungen
plt.rcParams["font.size"] = 15
#tes = nums_all.values.flatten().size #Menge
tes = (nums_all.sum().sum())/(nums_all.size) #durchschnittlich

plt.hist(nums_all.values.flatten(), bins=43, normed=True)
plt.show()
tes

abschließend

safasfsaf.png

Der Durchschnitt liegt bei 22, und das Histogramm ist ebenfalls sehr unzusammenhängend. Ich fand es nutzlos, verschiedene Dinge wie maschinelles Lernen zu tun.

Recommended Posts

Probieren Sie jetzt Web Scraping aus und erhalten Sie Lotterie-6-Daten
WEB-Scraping-Technologie und Bedenken
[Persönliches Memo] Holen Sie sich Daten im Web und machen Sie daraus einen DataFrame
Üben des Web-Scrapings mit Python und Selen
Einfaches Web-Scraping mit Python und Ruby
Web Scraping
[Für Anfänger] Versuchen Sie Web Scraping mit Python
Versuchen Sie, mithilfe der Python-Anforderungsbibliothek eine Webseite und eine JSON-Datei abzurufen
WEB Scraping mit Python und versuchen, aus Bewertungen eine Wortwolke zu machen
Holen Sie sich iPad Wartung durch Scraping und benachrichtigen Sie Slack
Ich habe versucht, Web-Scraping mit Python und Selen
[Python] Fluss vom Web-Scraping zur Datenanalyse
Holen Sie sich Informationen zu Bootsrennen mit Web Scraping
Versuchen Sie, MLB-Daten auf Mac und Python zu importieren
Holen Sie sich mit Python eine große Menge von Starbas Twitter-Daten und probieren Sie die Datenanalyse Teil 1 aus
Web Scraping (Prototyp)
Datenanalyse zur Verbesserung von POG 1 ~ Web Scraping mit Python ~
Versuchen Sie, Twitter-Daten in SPAM und HAM zu unterteilen
Python-Anfänger bleiben beim ersten Web-Scraping stecken
Erhalten Sie Kommentare und Abonnenten mit der YouTube-Daten-API