Ubuntu Suomen keskustelualueet
Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: ilkant - 23.12.22 - klo:07.23
-
Teinpä kokeilun Python Pandalla. Aluksi ilman lxml:ää, mutta kun virheilmoitus antoi ymmärtää, että se tarvitaan, niin asensin pipillä sen. Sitten kun ajoin ohjelman, tuli monta riviä virheilmoitusta. Kun katselee tuota sivua, siinä on monimutkaisia rakenteita. Ja vielä kun katsoo sivun lähdekoodia, ei siellä taulukoita olekaan. Ilmeisesti Pandalla ei voikaan lukea tuota sivua. Yksi esimerkkiohjelma kykeni lataamaan Wikipediasta ison taulukon tiedot helposti.
import pandas as pd # version 1.5.2
import lxml # version 4.9.2
if __name__ == '__main__':
site = 'https://www.iihf.com/en/events/2023/wm20/schedule'
games = pd.read_html(site)
games.info()
-
Tuollaisen sivun tulkinta vaatii kustomoitua koodia tai kehittyneen koneoppimismallin. Sivulle linkitetty PDF voisi olla helpompi lähde:
https://www.iihf.com/pdf/751/ihm751000_08_1_0
-
Tuollaisen sivun tulkinta vaatii kustomoitua koodia tai kehittyneen koneoppimismallin. Sivulle linkitetty PDF voisi olla helpompi lähde:
https://www.iihf.com/pdf/751/ihm751000_08_1_0
import pandas as pd # version 1.5.2
import lxml # version 4.9.2
from tabula import read_pdf
if __name__ == '__main__':
site = 'https://www.iihf.com/pdf/751/ihm751000_08_1_0'
# games = read_pdf(site)
df = read_pdf(site, pages='all')
df.info()
Tulee virheilmoitukset: (ja vaikuttaa minulle kohtalaisen aloittelijalle liian vaikeilta ratkoa muuten kuin tuo FORBIDDEN, joka tarkoittanee, että IIHF:n palvelin ei hyväksy tietopyyntöä.
Traceback (most recent call last):
File "Projects/IIHF_M18/main.py", line 9, in <module>
df = read_pdf(site, pages='all')
File "/home/user/venv/lib/python3.10/site-packages/tabula/io.py", line 415, in read_pdf
path, temporary = localize_file(input_path, user_agent, use_raw_url=use_raw_url)
File "/home/user/venv/lib/python3.10/site-packages/tabula/file_util.py", line 59, in localize_file
req = urlopen(path_or_buffer)
File "/usr/lib/python3.10/urllib/request.py", line 216, in urlopen
return opener.open(url, data, timeout)
File "/usr/lib/python3.10/urllib/request.py", line 525, in open
response = meth(req, response)
File "/usr/lib/python3.10/urllib/request.py", line 634, in http_response
response = self.parent.error(
File "/usr/lib/python3.10/urllib/request.py", line 563, in error
return self._call_chain(*args)
File "/usr/lib/python3.10/urllib/request.py", line 496, in _call_chain
result = func(*args)
File "/usr/lib/python3.10/urllib/request.py", line 643, in http_error_default
raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 403: Forbidden
Process finished with exit code 1
Jää sitten vielä keinoksi kirjoittaa IIHF:lle kirje, että tarjoaisivat nuo .ics -tiedostona, joaa on huomioitu TimeZonet. Eli menee suoraan kalenteriin oikeilla kellonajoilla penkkiurheilijan kotimaassa. Tietysti helpottaisi jo se, että html-sivulla ajat olisivat penkkiurheilijan timezonessa. Mutta alkuperäinen idea oli tehdä pulautin, joka veisi nuo Google-kalenteriin. Optiolla vain Suomen pelit tai valinnan mukaan kaikki pelit.