mikrocontroller.net

Forum: PC-Programmierung Python und Beautifullsoup


Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich mache gerade meine ersten Versuche.
name = askopenfilename(filetypes =(("Import File", "*.txt"),("All Files","*.*")),
                       title = ""
                       )


f = codecs.open(name, encoding='utf-8')




file_names = []
for file_name in f:
    file_name = file_name.strip()
    if ',' in file_name:
        for f in file_name.split(','):
            file_names.append(f)
    else:
        file_names.append(file_name)


workbook_overview = xlsxwriter.Workbook('overview.xlsx')
worksheet_overview = workbook_overview.add_worksheet("overview")
worksheet_overview.write('A1', 'url')
worksheet_overview.write('B1', 'titel')


count = 2

for file_name in file_names:
    #try:
    soup = BeautifulSoup(urlopen(file_name), "html.parser")
    title = soup.find('title')
    print (title)    
       
    worksheet_overview.write('A' + str(count), (file_name))

    worksheet_overview.write('B' + str(count), (title))
    count += 1
 

workbook_overview.close()


Hier bekomme ich allerdings die Fehlermeldung:

TypeError: float() argument must be a string or a number, not 'method_descriptor'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "D:\testing.py", line 72, in <module>
    worksheet_overview.write('B' + str(count), (title2)) 


Was mache ich denn falsch?

Autor: S R (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Vollständigen Code posten!

Woher soll ich wissen wo Zeile 72 ist?

Autor: S R (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Imports gehören auch dazu.

Wem es nicht aufgefallen ist:

    worksheet_overview.write('B' + str(count), (title))

Und die Fehlermeldung bezieht sich auf:

    worksheet_overview.write('B' + str(count), (title2))

Autor: Kaj G. (Firma: RUB) (bloody)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
S R schrieb:
> Und die Fehlermeldung bezieht sich auf:
Nein. Die erste Fehlermeldung sagt ganz klar:
TypeError: float() argument must be a string or a number, not 'method_descriptor'

Erst danach kommen die anderen Fehler:
During handling of the above exception, another exception occurred:

Irgendwo wird ein falsches Argument übergeben, was float() nicht wandeln 
kann. Dann gibt es eine Exception und das eine führt zum anderen.

Bitte poste den gesamten Code, sofern möglich. Alles andere ist 
Kaffesatzlesen.

Autor: S R (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Das hab ich schon gesehen, wollte nur verdeutlichen dass es so schwierig 
wird ;)

Autor: Kaj G. (Firma: RUB) (bloody)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
S R schrieb:
> Das hab ich schon gesehen, wollte nur verdeutlichen dass es so schwierig
> wird ;)
Ach so :D
Dann hab ich nichts gesagt ^.^

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

danke schonmal für die Antworten.


Bis auf die Imports war das der gesamte Code.

# coding: utf-8


import codecs

import xlsxwriter

from bs4 import BeautifulSoup 

from urllib.request import urlopen

from tkinter.filedialog import askopenfilename

 
        

      
 
 
 
 
 
 
 
 
 
      


name = askopenfilename(filetypes =(("Import File", "*.txt"),("All Files","*.*")),
                       title = ""
                       )


f = codecs.open(name, encoding='utf-8')






file_names = []
for file_name in f:
    file_name = file_name.strip()
    if ',' in file_name:
        for f in file_name.split(','):
            file_names.append(f)
    else:
        file_names.append(file_name)


        
workbook_overview = xlsxwriter.Workbook('overview.xlsx')
worksheet_overview = workbook_overview.add_worksheet("overview")
worksheet_overview.write('A1', 'url')
worksheet_overview.write('B1', 'titel')


count = 2

for file_name in file_names:
    
    soup = BeautifulSoup(urlopen(file_name), "html.parser")
    title = soup.find('title')
    print (title)    



       
    worksheet_overview.write('A' + str(count), (file_name))

    worksheet_overview.write('B' + str(count), (title))
    count += 1

 



  

workbook_overview.close() 



Meine Vermutung ist, dass es an dieser Zeile liegt

title = soup.find('title')

: Bearbeitet durch Moderator
Autor: Planlos (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Vermutung: "title" ist kein String, sondern ein HTML-Tag-Objekt. Schau 
in der Suppen-Dokumentation nach, wie du da das "innerHMTL" oder 
Text-Content herausbekommst.

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe mir jetzt nicht alles angeschaut (habe nur die Formatierung
mal korrigiert), aber wenn du wirklich einmal 'titel' und einmal
'title' schreibst, scheint mir, dass genau dies dein Problem sein
könnte.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.