Klicken Sie hier, um Daten zu löschen (https://www.data.jma.go.jp/obd/stats/etrn/view/10min_s1.php?prec_no=44&block_no=47662&year=2019&month=01&day=01&view=p1)
# -*- coding: utf-8 -*-
import pandas as pd
import urllib.request
from bs4 import BeautifulSoup
url = 'https://www.data.jma.go.jp/obd/stats/etrn/view/10min_s1.php?prec_no=44&block_no=47662&year=2019&month=01&day=01&view=p1'
html = urllib.request.urlopen(url)
soup = BeautifulSoup(html, 'html.parser')
element = soup.find_all('tr', attrs={'class':'mtx', 'style':'text-align:right;'})
out = []
for ele in element:
data_list = []
for e in ele:
data_list.append(e.text)
out.append(data_list)
df = pd.DataFrame(data=out, columns=['Stunde und Minute','Lokaler Druck','Meeresspiegeldruck','Niederschlag','Temperatur','Relative Luftfeuchtigkeit','Durchschnittliche Windgeschwindigkeit','Durchschnittliche Windrichtung','Maximale momentane Windgeschwindigkeit','Maximale momentane Windrichtung','Sonnenlichtzeit'])
df.to_csv('tokyo_2019-01-01.csv', index=None,encoding='SJIS')
#① Objektgenerierung zum Analysieren des angegebenen HTML-Codes
soup = BeautifulSoup(html, 'html.parser')
#② Holen Sie sich alle tr-Tags, indem Sie die Bedingungen angeben
element = soup.find_all('tr', attrs={'class':'mtx', 'style':'text-align:right;'})
Extrahieren Sie danach den Text daraus und fügen Sie ihn nacheinander zur Liste hinzu
** ↓ Ausgabeergebnis ↓ **
require 'csv'
require 'mechanize'
agent = Mechanize.new
url = 'https://www.data.jma.go.jp/obd/stats/etrn/view/10min_s1.php?prec_no=44&block_no=47662&year=2019&month=01&day=01&view=p1'
page = agent.get(url)
html = page.search('tr')
out = []
html.each do |element|
if element.get_attribute('style') == 'text-align:right;' then
data_list=[]
ele = element.search('td')
ele.each do |e|
data_list << e.inner_text
end
out << data_list
end
end
header = ['Stunde und Minute','Lokaler Druck','Meeresspiegeldruck','Niederschlag','Temperatur','Relative Luftfeuchtigkeit','Durchschnittliche Windgeschwindigkeit','Durchschnittliche Windrichtung','Maximale momentane Windgeschwindigkeit','Maximale momentane Windrichtung','Sonnenlichtzeit']
CSV.open('tokyo_2019-01-01.csv','w') do |csv|
csv << header
out.each do |val|
csv << val
end
end
#① Erstellen Sie eine Instanz der Mechanize-Klasse und rufen Sie den HTML-Code der angegebenen URL ab
agent = Mechanize.new
page = agent.get(url)
#② Nach dem Durchsuchen des tr-Tags mit der Suchmethode ist das Style-Tag Text-align:inner wenn richtig_Holen Sie sich Text mit der Textmethode
html = page.search('tr')
out = []
html.each do |element|
if element.get_attribute('style') == 'text-align:right;' then
data_list=[]
ele = element.search('td')
ele.each do |e|
data_list << e.inner_text
#~ Abkürzung ~
** ↓ Ausgabeergebnis ↓ **
Überraschenderweise gab es keinen großen Unterschied in der Menge des Codes. Ist es möglich, nach Tags zu suchen, indem Attribute in Ruby angegeben werden? .. ..
das ist alles! !! !!