BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!

❤️ DANKE >><< DANKE ❤️

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

[Gelöst] [Python] Das Importieren von Webdaten funktioniert nicht

Alles zur Programmierung im LibreOffice.
Antworten
genie
Beiträge: 25
Registriert: Di 20. Nov 2018, 00:37

[Gelöst] [Python] Das Importieren von Webdaten funktioniert nicht

Beitrag von genie » So 7. Apr 2019, 20:39

Grüße ,

muss ich Daten von einer Webseite mit Python-Makro in LibreOffice Calc importieren .

Ich habe im Forum nachgesehen und ein tolles Python-Makro gefunden hier .

Ich habe versucht, das Python-Makro aus dem gefundenen Thema auszuführen, aber es gelingt mir nicht .

gibt es einen Fehler, den ich mache ? Ich benutze die IDE PyCharm Community und habe bereits APSO in LibreOffice heruntergeladen .

Im Anhang folgt die LibreOffice-Datei mit dem Python-Makro .
Dateianhänge
Web importieren.ods
(10.01 KiB) 192-mal heruntergeladen
Zuletzt geändert von genie am Sa 11. Mai 2019, 17:55, insgesamt 1-mal geändert.
LibreOffice 5.4.4.2 - Windows 7

Benutzeravatar
karolus
Beiträge: 2170
Registriert: Fr 10. Dez 2010, 10:01

Re: [Python] Das Importieren von Webdaten funktioniert nicht

Beitrag von karolus » Mo 6. Mai 2019, 08:39

hallo

[disclaimer]ich hab das vom OP verlinkte Dokument nicht zusammengebaut, von mir stammt lediglich der python-Sourcecode[/disclaimer]

da ich den Sourcecode geschrieben habe den du im Dokument verwendest, habe ich mir das Teil nochmal angeschaut.
Wenn du da schon einen komischen Button einbaust das etwas tun soll dann musst du den auch mit der richtigen Funktion verknüpfen,
das wäre dann nämlich die Funktion main und nicht die Funktion get_contents, daraus resultierend musst du auch die Signatur von main ändern damit sie auch Argumente zumindest annimmt:

Code: Alles auswählen

def main(): #funktioniert nicht
#aber 
def main(*_)  #funktioniert
Hier nochmal eine korrigierte Datei:
Fussballwetten.ods
(24.67 KiB) 184-mal heruntergeladen
Bei weiteren Fragen bitte ich darum, mitzuteilen was du so gemacht hast, und welche Fehlermeldungen kommen. Danke!
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.3.2 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

genie
Beiträge: 25
Registriert: Di 20. Nov 2018, 00:37

Re: [Python] Das Importieren von Webdaten funktioniert nicht

Beitrag von genie » Do 9. Mai 2019, 00:05

Grüße karolus ,

Ich habe bereits viele Versuche unternommen, um das REQUESTS-Modul zu installieren. Kein Versuch hat funktioniert. Daher kann ich kein Python-Programm mit dem REQUESTS-Paket ausführen .

Ich habe nach neuen Modulen gesucht, um ein Python-Programm auszuführen, um Daten von einer Webseite in LibreOffice zu importieren .

Ich habe einen Code gefunden, der für mich funktioniert, aber dieser Code importiert die Daten in eine einzige Spalte. Ich brauche die Datenarchitektur im Arbeitsblatt, um die Architektur der Internet-Quellseite zu sehen .

Hier ist der Code, der für mich funktioniert:

Code: Alles auswählen

# -*- coding: utf-8 -*-
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):
  for i in range(len(parser.dataArray)):
   activeSheet.getCellByPosition(0, i).setString(parser.dataArray[i])
Ich habe auch ein anderes modell zum Importieren von Daten aus dem Internet recherchiert und entdeckt. Dieses Modell verwendet das Paket html.parser .

Beobachtung:
Ich muss die Daten auf eine organisierte Weise importieren, d. H. Ähnlich der Webseite der Quelle, in die Sie die Daten importieren .

Ich kann immer noch keinen Code erstellen, um die Daten auf eine organisierte Weise in Spalten zu importieren, die für mich geeignet sind, genauso wie auf der ursprünglichen Webseite .
LibreOffice 5.4.4.2 - Windows 7

Wanderer
Beiträge: 895
Registriert: Di 11. Feb 2014, 20:03
Wohnort: Berlin

Re: [Python] Das Importieren von Webdaten funktioniert nicht

Beitrag von Wanderer » Do 9. Mai 2019, 07:32

Hallo,

der Code der für Dich funktioniert schreibt einfach die Inhalte aller a-Tags in ein Array. Dies wird hinterher in eine Spalte kopiert.
Dein anderes "Modell" nutzt dieselbe library, hat aber spezielle Routinen definiert um auf verschiedene Tags zu reagieren.

Entsprechend musst DU die gewünschte html-Seite analysieren und rausfinden wie die Daten kodiert sind, die Du brauchst und einen angepassten Parser erstellen

Mfg, Jörn.
LO 6.0.7 (32Bit) Win8.1 Pro 32 Bit/ LO 6.3.2 Win10 64Bit / LO 6.0.7 Win7 Pro 64 Bit

genie
Beiträge: 25
Registriert: Di 20. Nov 2018, 00:37

Re: [Python] Das Importieren von Webdaten funktioniert nicht

Beitrag von genie » Do 9. Mai 2019, 09:03

Ich möchte die Tabellendaten von dieser webseite hier importieren , sind sieben Spalten, um die Spalte Change (24h) .

Ich möchte das LibreOffice-Arbeitsblatt in organisierten Spalten wie auf der ursprünglichen Webseite einfügen .

Ich kann dieses Python-Programm jedoch nicht ausführen. Ich habe bereits Beispiele mit dem Paket REQUESTS ausprobiert. Dieses Paket funktioniert jedoch nicht für min. Daher muss ich versuchen, das paket Html.Parser auszuführen .

Ich habe dieses Problem hier veröffentlicht. Vielleicht kann mir jemand helfen, die Daten mit dem paket html.parser zu importieren .
LibreOffice 5.4.4.2 - Windows 7

Benutzeravatar
karolus
Beiträge: 2170
Registriert: Fr 10. Dez 2010, 10:01

Re: [Python] Das Importieren von Webdaten funktioniert nicht

Beitrag von karolus » Do 9. Mai 2019, 21:59

Es gibt weder ein Modul REQUESTS noch ein modul Html.Parser eben weil Modulnamen im allgemeinen komplett in Kleinbuchstaben geschrieben werden.

Könntest du mal etwas genauer ausführen wo bei dir requests scheitert, hast du überhaupt mal in der Windowsshell:

pip install requests --user

versucht?
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.3.2 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

genie
Beiträge: 25
Registriert: Di 20. Nov 2018, 00:37

[Gelöst] [Python] Das Importieren von Webdaten funktioniert nicht

Beitrag von genie » Sa 11. Mai 2019, 17:54

Ich habe es jetzt in der Windows-Shell und auch in der PyCharm-Shell gemacht .

Dann wird das Requests-modul installiert. Vielen Dank für Ihre Anleitung . :)


eine große Umarmung .
LibreOffice 5.4.4.2 - Windows 7

Benutzeravatar
karolus
Beiträge: 2170
Registriert: Fr 10. Dez 2010, 10:01

Re: [Gelöst] [Python] Das Importieren von Webdaten funktioniert nicht

Beitrag von karolus » So 12. Mai 2019, 14:22

Dann zeig doch bitte mal deine Lösung, ich möchte meine Lösung nicht posten bevor ich nicht weiss ob du selbst etwas sinnvolles produziert hast.

(*ich hab nämlich bisher den Eindruck das du nur faul irgendetwas zusammenkopierst und hoffst das es das tut was du möchtest.)

Mit freundlichen Grüßen
Karolus
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.3.2 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

An alle, die das LibreOffice-Forum nutzen:


Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten