[Solved] [Python] Wykorzystaj dane internetowe

Użytkowanie arkusza kalkulacyjnego
zico
Posty: 3
Rejestracja: wt kwie 16, 2019 12:56 am

[Solved] [Python] Wykorzystaj dane internetowe

Post autor: zico »

pozdrowienia , jestem nowy tutaj na forum .

Muszę zbudować projekt z makrem Python, aby pobrać dane z Internetu do LibreOffice Calc .

Chcę pobrać dane z poniższej tabeli sieci Web .

Znalazłem makro Pythona, które robi część akcji ratunkowej, ale nie mogę zrealizować całego stołu Web .

oto szablon, który znalazłem w Internecie, to python makro tylko ratuje kawałek stołu, ale nie mogę zrealizować całej tabeli .

Kod: Zaznacz cały

from __future__ import unicode_literals
import urllib.request
from html.parser import HTMLParser
#------defining parser ---#
class MyParser(HTMLParser):
    def __init__(self,target_tag):
        HTMLParser.__init__(self)
        self.targetTag=target_tag
        self.targetFound=False
        self.dataArray=[]
    def handle_starttag(self,tag,attrs):
        self.targetFound=False
        if (tag==self.targetTag):
            self.targetFound=True
    def handle_endtag(self,tag):
        if tag==self.targetTag:
            self.targetFound=False
    def handle_data(self, data):
        if (self.targetFound):
            self.dataArray.append(data)
#######   target URL   #######################
MyUrl='https://coinmarketcap.com/#currencies_wrapper'
OpenUrl=urllib.request.urlopen(MyUrl)
#######  get the html code   ################
responseHTML=OpenUrl.read().decode('utf-8')
parser=MyParser("a")
parser.feed(responseHTML)
# LibreOffice code #
activeSheet=XSCRIPTCONTEXT.getDocument().getCurrentController().getActiveSheet()
def LastMessage(*args):
    activeSheet.getCellRangeByName("A1").setString(parser.dataArray[45])
    activeSheet.getCellRangeByName("B1").setString(parser.dataArray[46])
    activeSheet.getCellRangeByName("A2").setString(parser.dataArray[47])
    activeSheet.getCellRangeByName("B2").setString(parser.dataArray[48])
dołączony jest plik z makrem python cytowanego modelu .
Załączniki
importuj dane.ods
(9.96 KiB) Pobrany 86 razy
Ostatnio zmieniony sob maja 11, 2019 6:22 pm przez zico, łącznie zmieniany 1 raz.
LibreOffice 5.4.4.2 >>>> Windows 7
Jan_J
Posty: 4560
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: [Python] Wykorzystaj dane internetowe

Post autor: Jan_J »

zico pisze:Muszę zbudować projekt z makrem Python, aby pobrać dane z Internetu do LibreOffice Calc .
Znajomość z Pythonem zacząłbym od czegoś prostszego niż interfejs typu SAX.
JJ
LO (7.6|24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
zico
Posty: 3
Rejestracja: wt kwie 16, 2019 12:56 am

Re: [Python] Wykorzystaj dane internetowe

Post autor: zico »

Uczę się prostszych rzeczy i studiuję ten temat, który umieściłem tutaj na forum .

Próbowałem już wiele wiedzy, bardziej złożone makra Python, aby importować dane z sieci do arkusza LO, użyj modułów: Requests i BeautifulSoup .

ale nie mogę zaimportować tych dwóch modułów do mojego python (pycharm) .

Dziękuję bardzo, cała pomoc jest mile widziana .
LibreOffice 5.4.4.2 >>>> Windows 7
Jan_J
Posty: 4560
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: [Python] Wykorzystaj dane internetowe

Post autor: Jan_J »

Requests to niskopoziomowe programowanie interfejsu http. Dobre jeśli chcesz sam napisać prosty serwer. Beautiful soup to obiektowy interfejs do baz danych.
Są to piękne i użyteczne moduły, ale nie dla nowicjuszy. Uczyć się podstaw na nich to jakby, no cóż, zobaczyć kilka skoków narciarskich w TV, pożyczyć sprzęt i pójść na Krokiew albo choćby na Malinkę.
Moja ulubiona polecana lektura wstępna: Allen Downey Myśl w języku Python albo PDF oryginalnej (anglojęzycznej) wersji https://greenteapress.com/wp/think-python/. A przed BeautifulSoup przyda się jeszcze znajomość SQL. Dopóki tego nie ma w małym palcu, uczenie się poważnych modułów jest stratą czasu.

// Może się mylę (oby), ale wygląda mi to na studencki midterm wymagający już jakiejś znajomości narzędzi. Na pewno nie jest to temat dobry na pierwszy samodzielny projekt.

Zaś do dociągania standardowych, lecz nie zainstalowanych modułów służy narzędzie pip (Package Installer for Python): patrz https://pip.pypa.io/en/stable/
JJ
LO (7.6|24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
zico
Posty: 3
Rejestracja: wt kwie 16, 2019 12:56 am

[Solved] [Python] Wykorzystaj dane internetowe

Post autor: zico »

Wykonałem instalacje pakietów za pomocą polecenia PIP w powłoce Windows, a także w PyCharm Shell . :)

dziękuję bardzo za wskazówki, ponieważ bardzo mi pomogło w badaniu rozwiązania tego tematu . :super:


Duży uścisk mój przyjacielu . :super:
LibreOffice 5.4.4.2 >>>> Windows 7
ODPOWIEDZ