Seite 1 von 1

BeautifulSoup installieren

Verfasst: Montag 16. November 2020, 20:10
von Hope
Hallo allerseits,

ich schreibe an meiner MA und muss zum ersten Mal programmieren. Also bitte habt Nachsicht :)

In meiner MA geht es um Kreditrisikomessung im WWW. Dh ich programmiere und crawle durch die Seiten und muss sie letztlich analysieren mittels Sentiment Analysis.
Mein Problem: Ich arbeite mit Python und einem Editor (mittlerweile habe ich einige Editoren ausprobiert, da nichts funktioniert hat, zb PyCharm, Sublime Text, Anaconda).

Ich habe im Terminal alles installiert: BeautifulSoup, Pandas, RoboBrowser., requests.

Im Editor jedoch wirft der mir nicht das HTML Dokument aus, wenn ich BS importiere, sondern gibt mir jedes mal eine Fehlermeldung.

from bs4 import BeautifulSoup
import requests

Output: traceback (most recent call last): File ..... , line 1, in <module> import requests
ImportError: No module named requests
[finished in 0.5s with exit code 1]
[shell_cmd: python -u" Ordername..."]
[dir ....]
[path ..... ]

Ich danke im Voraus

Re: BeautifulSoup installieren

Verfasst: Montag 16. November 2020, 20:50
von Sirius3
Du mußt auch noch requests installieren.

Re: BeautifulSoup installieren

Verfasst: Montag 16. November 2020, 21:53
von Hope
Danke für die Rückmeldung. Ich habe "pip Install requests" im Terminal schon installiert. Jetzt habe ich nochmal versucht "from bs4 Import BeautifulSoup" im Shell zu rennen. Ich bekomme wieder eine Fehlermeldung:


Warning (from warnings module):
File "/Users/Nadine/Desktop/Masterarbeit_DB/html,python,r_lernen/BS.py", line 11
soup = BeautifulSoup(resp.content)
GuessedAtParserWarning: No parser was explicitly specified, so I'm using the best available HTML parser for this system ("lxml"). This usually isn't a problem, but if you run this code on another system, or in a different virtual environment, it may use a different parser and behave differently.

The code that caused this warning is on line 11 of the file /Users/Nadine/Desktop/Masterarbeit_DB/html,python,r_lernen/BS.py. To get rid of this warning, pass the additional argument 'features="lxml"' to the BeautifulSoup constructor.

Traceback (most recent call last):
File "/Users/Nadine/Desktop/Masterarbeit_DB/html,python,r_lernen/BS.py", line 51, in <module>
from robobrowser import RoboBrowser
File "/Users/Nadine/opt/anaconda3/lib/python3.8/site-packages/robobrowser/__init__.py", line 3, in <module>
from .browser import RoboBrowser
File "/Users/Nadine/opt/anaconda3/lib/python3.8/site-packages/robobrowser/browser.py", line 8, in <module>
from werkzeug import cached_property
ImportError: cannot import name 'cached_property' from 'werkzeug' (/Users/Nadine/opt/anaconda3/lib/python3.8/site-packages/werkzeug/__init__.py)

Ich weiss echt nicht, was ich machen soll.
lxml habe ich auch installiert. Ich nutze einen Mac.

Re: BeautifulSoup installieren

Verfasst: Montag 16. November 2020, 22:18
von __blackjack__
@n.soueid@gmx.de: Offenbar braucht `robobrowser` das `werkzeug`-Package und es ist nicht ordentlich als Abhängigkeit definiert gewesen. Müsste man also noch nachinstallieren.

Die Warnung könntest Du im Code beheben. Bei `BeautifulSoup` fehlt neben dem HTML-Quelltext noch das zweite Argument.

Gewöhne Dir am besten auch gar nicht erst an kryptische Abkürzungen als Namen zu verwenden. Wenn man `response` meint, sollte man nicht nur `resp` schreiben.

Re: BeautifulSoup installieren

Verfasst: Dienstag 17. November 2020, 11:42
von Hope
Vielen Dank für die Rückmeldung. BeautifulSoup hat funktioniert. Was meinst du mit dem 2. Argument?

Was heißt ordentlich installieren ? Ich habe robobrowser und Werkzeug nacheinander installiert. Oder soll man da auf Weiteres achten?

Re: BeautifulSoup installieren

Verfasst: Dienstag 17. November 2020, 11:45
von sparrow
@n.soueid@gmx.de: Wenn du eine Instanz von BeautifulSoup anlegst, übergibst du bisher nur ein Argument - nämlich resp.content. BeautifulSoup kennt aber noch weiter Argumente.

Re: BeautifulSoup installieren

Verfasst: Dienstag 17. November 2020, 13:08
von __blackjack__
@n.soueid@gmx.de: Wenn `robobrowser` `werkzeug` als Abhängigkeit hat, dann sollte das eigentlich automatisch mit installiert werden. Es sei denn die Autoren von `robobrowser` haben die Abhängigkeit nicht wie vorgesehen angegeben.

Re: BeautifulSoup installieren

Verfasst: Freitag 20. November 2020, 12:55
von Hope
Hallo, ich danke für die Antworten. Ich versuche seit 2 Tagen das Problem zu lösen, es funktioniert leider nicht.

Jetzt habe ich nochmal diese Codes im Terminal installiert:
pip Install werkzeug==0.16.01
pip install RoboBrowser
pip install werkzeug Robobrowser

Alles funktioniert im Terminal, aber nicht in der Shell.
In der Shell habe ich folgende Codes:
from werkzeug.utils import cached_property (funktioniert)
from werkzeug import RoboBrowser (funktioniert nicht)
from robobrowser import RoboBrowser (funktioniert nicht)

Habe ich was übersehen?
Dankeschön

Re: BeautifulSoup installieren

Verfasst: Freitag 20. November 2020, 14:08
von Sirius3
Was ist denn bei Dir das Terminal und was ist die Shell?

Re: BeautifulSoup installieren

Verfasst: Freitag 20. November 2020, 14:54
von __blackjack__
Und warum sollte das `werkzeug`-Package `RoboBrowser` zur Verfügung stellen?

Re: BeautifulSoup installieren

Verfasst: Freitag 20. November 2020, 15:16
von __blackjack__
Ich habe das jetzt mal nachvollzogen: RoboBrowser hat die Abhängigkeiten ordentlich deklariert und zieht auch die Installation von BeautifulSoup4, requests, und Werkzeug nach sich. Man braucht also nur RoboBrowser installieren und bekommt alles andere auch schon geliefert:

Code: Alles auswählen

(rb) bj@s8n:~/tmp/forum/rb$ pip install RoboBrowser
[…]
Installing collected packages: Werkzeug, soupsieve, beautifulsoup4, urllib3, certifi, chardet, idna, requests, six, RoboBrowser
  Running setup.py install for RoboBrowser ... done
Successfully installed RoboBrowser-0.5.3 Werkzeug-1.0.1 beautifulsoup4-4.9.3 certifi-2020.11.8 chardet-3.0.4 idna-2.10 requests-2.25.0 six-1.15.0 soupsieve-2.0.1 urllib3-1.26.2
Beim Importieren von `RoboBrowser` bekomme ich dann auch die Ausnahme das `cached_property` von `werkzeug` nicht importiert werden kann:

Code: Alles auswählen

(rb) bj@s8n:~/tmp/forum/rb$ python -c 'from robobrowser import RoboBrowser'Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/home/bj/tmp/forum/rb/lib/python3.6/site-packages/robobrowser/__init__.py", line 3, in <module>
    from .browser import RoboBrowser
  File "/home/bj/tmp/forum/rb/lib/python3.6/site-packages/robobrowser/browser.py", line 8, in <module>
    from werkzeug import cached_property
ImportError: cannot import name 'cached_property'
Also "robobrowser ImportError: cannot import name 'cached_property'" in eine Suchmaschine füttern und die ersten Treffer durchsehen, dann kommt man zu einem Bugtracker-Issue bei RoboBrowser: RoboBrowser is broken with werkzeug upgrade. Bug ist noch offen aber in den Kommentaren gibt es eine einfache Übergangslösung.

Alternativ könnte man bei Werkzeug schauen wann diese Änderung gemacht wurde und eine entsprechend ältere Werkzeug-Version installieren.

Re: BeautifulSoup installieren

Verfasst: Montag 23. November 2020, 14:19
von Hope
Hallo, Terminal ist bei mir, wie beim Windows, der command line. Shell ist bei mir Python command.

Ich habe es nochmal versucht. Danke @_blackjack_ für den Hinweis. Ich habe zuerst RoboBrowser in der Shell angegeben und alles weitere hat funktioniert.

Re: BeautifulSoup installieren

Verfasst: Freitag 12. Februar 2021, 15:40
von Hope
Hallo allerseits, leider kann ich kein neues Thema eröffnen, daher schreibe ich hier:

Ich muss einen Ordner crawlen, der eine .xlsx Datei enthält mit Scrapy. Alle Codes, die ich bisher ausprobiert habe, funktionieren nicht.

import scrapy

egal was ich finde, ist immer nur mit URL

class BlogSpider(scrapy.Spider):
name = 'blogspider'
start_urls = ['https://www.zyte.com/blog/']

Mein Betreuer hat mir mongoDB gestartet, mit cd auf den Ordner zugegriffen und mit dem command "scrapy crawl my_spider" sollte eig alles funktionieren, tut es aber nicht, weil die Excel-Datei im Ordner angeblich nicht funktioniert. Ich habe daraufhin "pip Install xlrd" installiert, es funktioniert dennoch nicht.

Hat vllt jemand eine Idee was ich machen kann? oder sollte ich vllt einen neuen Code wie da oben starten mit class?
Ich danke vielmals

lg Hope

Re: BeautifulSoup installieren

Verfasst: Freitag 12. Februar 2021, 20:55
von sparrow
Einen Ordner auf deiner Platte? Der hat doch nichts mit "crawlen" zu tun. Man "crawlt" Internetseiten. Für Dateien auf dem lokalen Rechner braucht man das nicht.
Den Rest deiner Frage verstehe ich nicht. Was hat mongoDB damit zu tun? Und was scrapy?
Bitte versuch einmal dein Problem zu beschreiben - ohne möglicherweise falsche Bibliotheken.

Re: BeautifulSoup installieren

Verfasst: Freitag 12. Februar 2021, 23:08
von Hope
Ich danke erstmal für die Antwort. Ich versuche es zu erklären. Ich soll einen vorinstallierten Ordner, der aus Python Skripten und einer excel Datei besteht, crawlen. Alles soll ich mongoDB abgespeichert werden. Ich geh wie folgt vor: mongoDB starten und beenden, cd in den Ordner und dann scrapy crawl my_spider. Das Tool scrapy zum Crawlen soll ich benutzen. Im Terminal hat scrapy crawl my_spider nicht funktioniert, da laut Terminal er die xlsx nicht lesen kann. Auch wenn ich xlrd installiert habe.

Kann man denn aus einem Ordner mit Python Skripten und einer excel Datei crawlen?

Re: BeautifulSoup installieren

Verfasst: Freitag 12. Februar 2021, 23:58
von __blackjack__
@Hope: Nochmal: Das macht keinen Sinn was Du da beschreibst. „Crawlen“ bezeichnet den Vorgang ausgehend von einer URL Webseiten zu verarbeiten in dem man den Links auf der oder den Ausgangsseite(n) folgt und Informationen aus den Seiten gewinnt und speichert. Scrapy ist ein Werkzeug/Rahmenwerk für solche Aufgaben. Du sollst also ganz sicher nicht den Ordner mit den vorgegebenen Dateien ”crawlen”.

Du scheinst da Code vorgegeben zu haben der mit den Scrapy-Rahmenwerk arbeitet. Und dazu irgendetwas mit einer Exceldatei machen soll. Und das klappt nicht. Was immer das auch bedeuten mag. Da musst Du etwas konkreter werden. Du gibst ``scrapy crawl my_spider`` ein — und was passiert dann genau? Eine Fehlermeldung? Wie lautet die? Nicht beschreiben sondern am besten 1:1 in den Beitrag kopieren.