Seite 2 von 2
Re: Fehler im Script?
Verfasst: Freitag 1. Januar 2016, 14:41
von Marcellus
soweit passt alles, nur erhalte ich leider die Fehlermeldung:
ImportError: No module named 'bs4'
Code: Alles auswählen
from bs4 import BeautifulSoup
import requests
url = "http://www.heise.de/"
webpage = requests.get(url).text
soup = BeautifulSoup(webpage, "html.parser")
results = soup.find_all("h2")
for result in results:
print(result.text.strip(" "))
import pprint
ergebnisse = []
results = ["http://www.ard.de", "http://www.zdf.de",
"http://www.rtl.de", "http://www.disney.de"]
for i, result in enumerate(results):
teilergebnis = []
Lead nr = i + 1
content = "Fahrrad"
url = result
cms = "Magento, JTL, Typo3"
ranking = i
teilergebnis = [Lead nr, content, url, cms, ranking]
ergebnisse.append(teilergebnis)
pprint.pprint(ergebnisse)
Re: Fehler im Script?
Verfasst: Freitag 1. Januar 2016, 15:54
von pixewakb
Nope, das passt noch nicht. Arbeite begleitend ein Tutorial zu Python zumindest ansatzweise durch.
Folgendes Problem: Du rufst wahrscheinlich Module auf, die Du zuvor nicht installiert hast. Das vermute ich ganz massiv, deshalb die Fehlermeldungen. Das sind Grundlagen und deshalb solltest Du dich an ein Tutorial machen.
Konkret zur Lösung:
http://docs.python-requests.org/en/late ... l/#install
http://www.crummy.com/software/BeautifulSoup/#Download
Ich setze immer voraus, dass Du Windows nutzt, weil ich das auch mache. In dem Fall startest Du die MS Eingabeaufforderung (Command Prompt) und gibst folgende 2 Sachen nacheinander ein und bestätigst jede Eingabe mit Enter.
Zeile 1:
pip install requests
Das installiert Dir requests, was Du brauchst und wahrscheinlich den nächsten Fehler geworfen hätte.
Zeile 2:
pip install BeautifulSoup
Das installiert Dir das bs4-Package.
Anschließend kannst Du das Skript noch mal versuchen und die Fehlermeldungen sollten nicht mehr auftauchen. Ich merke an, dass pip nach Bestätigen von Enter erst einmal arbeitet und Dir Sachen anzeigt. Das sollte aber fehlerfrei durchlaufen...
Re: Fehler im Script?
Verfasst: Freitag 1. Januar 2016, 16:52
von Marcellus
Ok. Tutorials habe ich mir heute fast den ganzen Tag rein gezogen
requests zu installieren war kein Problem, bei beautifulSoup habe ich noch Schwierigkeiten.
Ich habe es nun mehrere male versucht, anscheinend mache ich da noch was falsch..
[img]
[IMG]http://www.bilder-upload.eu/thumb/e248d6-1451664686.png[/img][/img]
----------
installation hat jetzt funktioniert.

Re: Fehler im Script?
Verfasst: Freitag 1. Januar 2016, 17:15
von Marcellus
Re: Fehler im Script?
Verfasst: Freitag 1. Januar 2016, 17:23
von BlackJack
Unter `site-packages` eine `setup.py` auszuführen sieht schon mal ziemlich falsch aus. In die Verzeichnishierarchie von Python selbst sollte man nichts von Hand kopieren (wenn man nicht genau weiss was man da tut) oder gar Archive entpacken um dann von dort Skripte zum Installieren zu starten.
BeautifulSoup 4 braucht auch noch eine Bibliothek um letztendlich das HTML zu parsen. Da es dort verschiedene Alternativen gibt, denke ich die muss man manuell installieren weil da keine als feste Abhängigkeit definiert sein dürfte. `lxml.html` wäre beispielsweise so eine Bibliothek die `bs4` zum Parsen verwenden kann.
Re: Fehler im Script?
Verfasst: Freitag 1. Januar 2016, 17:33
von Marcellus
ich hab alles nochmal platt gemacht und python neu installiert und dann erst requests über pip installiert und dann beauftifulsoup
[img]
[IMG]http://www.bilder-upload.eu/thumb/1ca4f7-1451667092.png[/img][/img]
Re: Fehler im Script?
Verfasst: Freitag 1. Januar 2016, 17:43
von nezzcarth
pixewakb hat geschrieben:Ich sage es mal so: Wahrscheinlich würde ich es neu programmieren, weil ich den Aufwand für gering halte.
Google findet automatisierte Abfragen nicht so gut und lässt diese nicht so ohne weiteres über sich ergehen (s.a.
https://support.google.com/webmasters/answer/66357; das dürfte trotz der Rubrik wohl für Google allgemein gelten). Abgesehen davon, dass man gegen die Nutzungsbedingungen verstößt, wird Aufgabe daher weniger trivial sein, als sie klingt.
Re: Fehler im Script?
Verfasst: Freitag 1. Januar 2016, 18:17
von pixewakb
Ich erinnere mich, dass ich darüber mal mit BlackJack hier "gesprochen" habe. Meine Datenquellen im Netz verbieten kaum etwas bzw. Unterseiten, die ich gar nicht suche, also die mich nicht interessieren.
Konkret:
http://www.google.de/robots.txt
Was kann eigentlich bei einem unrechtmäßigen Parsen solcher Seiten passieren!? Würde mich interessieren. Teilweise als Fingerübung schreibe ich schon mal Software, um Webseiten abzufragen, ohne mich vorher in Sachen robots.txt kundig zu machen.
Re: Fehler im Script?
Verfasst: Freitag 1. Januar 2016, 18:44
von BlackJack
@pixewakb: Einfachster Fall wäre wenn die Server versuchen solche Zugriffe zu erkennen und zu blocken. Wenn man auf der Seite ein Benutzerkonto besitzt und der Betreiber einen als Übeltäter identifizieren kann, könnte das Konto gesperrt werden. Es könnte auch zu künstlichen Hindernissen für alle Benutzer kommen um Missbrauch zu vermeiden. Oder der Dienst stellt den Betrieb ein wenn es überhand nimmt.
Verfasst: Freitag 1. Januar 2016, 21:03
von nezzcarth
BlackJack hat geschrieben:@pixewakb: Einfachster Fall wäre wenn die Server versuchen solche Zugriffe zu erkennen und zu blocken.
Im konkreten Fall -- Google -- bekommt man Captchas vorgesetzt.
Re: Fehler im Script?
Verfasst: Samstag 2. Januar 2016, 20:01
von Marcellus
requests und beautiful soup sind installiert und laufen, auch das crawlen mit "h2" gab mir die entsprechende Ausgabe.
Code: Alles auswählen
from bs4 import BeautifulSoup
import requests
url = "http://www.zdf.de/"
webpage = requests.get(url).text
soup = BeautifulSoup(webpage, "html.parser")
results = soup.find_all("h2")
for result in results:
print(result.text.strip(" "))
import pprint
ergebnisse = []
results = ["http://www.ard.de", "http://www.zdf.de",
"http://www.rtl.de", "http://www.disney.de"]
for i, result in enumerate(results):
teilergebnis = []
nr = i + 1
content = "Hose, blau"
url = result
cms = "Magento, JTL, Typo3"
ranking = i
teilergebnis = [nr, content, url, cms, ranking]
ergebnisse.append(teilergebnis)
pprint.pprint(ergebnisse)
wie kann ich jetzt weitermachen? Kann mir jemand einen tip geben? Ich habe hier was sehr interessantes gefunden, bin mir aber noch viel zu unsicher es so wie er hier beschreibt anzugehen:
http://eliteinformatiker.de/2013/01/29/ ... mentieren/
Re: Fehler im Script?
Verfasst: Samstag 2. Januar 2016, 20:43
von pixewakb
Du musst Dich mit den Grundlagen befassen, sonst wird das nichts.
Du kopierst meine Schnipsel zusammen, ohne sie sinnvoll zu verbinden.
Nur mal so am Rande: Ich sehe gerade das Problem, dass man den Google-Such-Link nicht einfach zusammenbasteln kann, d. h. Google packt da einiges rein. Ansonsten könntest Du mal grob beschreiben, was Du eigentlich brauchst.
Folgendes funktioniert bei mir im Browser:
https://www.google.de/search?q=python
https://www.google.de/search?q=python+crawler
Re: Fehler im Script?
Verfasst: Samstag 2. Januar 2016, 21:03
von Marcellus
sorry

wollte Dich doch nicht ärgern. Die "Schnippsel" habe ich einfach nur zusammengefügt um nochmal darauf aufmerksam zu machen..
ja Grundlagen bin ich mit Tutorial videos dran.
Was ich brauche ist ein crawler der mit in einer csv datei oder xls CMS System, URL und das googlerank ausspuckt. wie gesagt, hat mir vor einigen jahren mal ein bekannter, der aber verstorben ist sowas gebastelt. und der funktioniert nicht mehr. Da ich aber hier nun nicht mehr groß weiter komme und ich Dich anscheinend auch noch verärgert habe, werde ich mich erstmal mit den Grundlagen beschäftigen und irgendwann eines Tages, vielleicht mal solch einen Crawler basteln. ich habe wirklich gedacht, das es schneller umsetzbar ist. Trotzdem vielen Dank für die hilfe bisher!
Re: Fehler im Script?
Verfasst: Samstag 2. Januar 2016, 21:13
von pixewakb
Verärgert bin ich nicht, die Smileys sollte man nicht so ernst nehmen. Mein Eindruck ist allerdings, dass das so nichts werden kann. Mom. ich schaue mal.
Re: Fehler im Script?
Verfasst: Samstag 2. Januar 2016, 21:47
von pixewakb
Das kann man so eigentlich kaum weitergeben, aber es ist ein Anfang und für mehr reicht die Zeit nicht. Du könntest mal schauen, ob es bei dir lauffähig ist. Was genau brauchst Du? Ich frage mal ganz doof, wie weit willst Du die Google Suche auswerten!? Du müsstest dann die Unterseiten nämlich auch noch durchsuchen.
Die Variablennamen dürften nicht akzeptabel sein, eigentlich gibt es zum Schreiben von csv-Dateien auch ein eigenes Modul...
Code: Alles auswählen
import requests
from bs4 import BeautifulSoup
suchwort = "Python crawler"
url = "https://www.google.de/search?q={}"
# URL zusammenbauen
google_url = url.format(suchwort.replace(" ", "+"))
# Seite abfragen
webpage = requests.get(google_url).text
soup = BeautifulSoup(webpage, "html.parser")
with open("webpage.txt", "w") as f:
f.write(webpage)
"""
Text
Welcome to Python.org
https://www.python.org/ Diese Seite übersetzen
The official home of the Python Programming Language.
Download - Python 3.4.3 - Documentation - Getting Started
HTML in Auswahl (scheint nicht (!) zu stimmen!!!)
<div class="rc" data-hveid="31">
<h3 class="r"><a href="[...] data-href="https://www.python.org/">Welcome to Python.org</a></h3>
<div class="s"><div><div class="f kv _SWb" style="white-space:nowrap">
<cite class="_Rm">https://www.<b>python</b>.org/</cite>
[...]
<span class="st">The official home of the <em>Python</em> Programming Language.</span>
[...]
"""
results = soup.find_all("li", attrs={"class": "g"})
ergebnisse = []
for i, result in enumerate(results):
# print(result)
print("Rang:", i+1)
title = result.find("h3").find("a").text.replace("\n", "\t")
print(title)
"""
<span class="st">PyPI Version PyPI monthly downloads Wheel Status <b>Python</b> 3 Porting Status <br>
Coverage report. Install the latest version of Scrapy. Scrapy 1.0. pip install scrapy.</br></span>
"""
summary = result.find("span", attrs={"class": "st"}).text.replace("\n", "\t")
print(summary)
# input(">>>")
ergebnisse.append([i+1, title, summary])
with open("ergebnisse.csv", "a") as f:
for zeile in ergebnisse:
f.write(";".join(map(str, zeile))+"\n")
Re: Fehler im Script?
Verfasst: Samstag 2. Januar 2016, 22:02
von Marcellus
eigentlich reicht die Startseite aus, denn das was ich suche ist auf der startseite meistens zu finden. Z.B. Magento oder Joomla steht ja im Quelltext drin. Was dann noch gesucht werden soll sind z.b. Farbe oder Produktname usw. diese Begriffe möchte ich mir dann gerne aussuchen und eintragen können.
Re: Fehler im Script?
Verfasst: Samstag 2. Januar 2016, 22:14
von pixewakb
Damit hört es auf einfach zu sein

Du musst jetzt jede Zielseite wieder einzeln auswerten und die Daten zusammenstellen... Nicht so schön. Wie gut sind deine Programmierkenntnisse!?!?!?
Re: Fehler im Script?
Verfasst: Samstag 2. Januar 2016, 22:18
von Marcellus

Programmierkenntnisse? Naja, html grundkenntnisse habe ich, Python seit etwa 3 Tagen non stop video tutorials am reinziehen. ich würde sagen meine Programmierkenntnisse sind fast bei 0. Trotzdem verstehe ich mir bereits angeschauten Videos und bin auch hochmotiviert Python zu lernen. weniger wegen dem script was ich brauche, eher aus dem Interesse heraus. Trotzdem brauche ich natürlich diesen Crawler und so richtig wissen wie und woher die den bekomme, außer selber hinzusetzen, fällt mir nichts ein.
Re: Fehler im Script?
Verfasst: Samstag 2. Januar 2016, 23:20
von Sirius3
@pixewakb: Bei Query-Strings ist nicht nur das Leerzeichen ein Sonderzeichen. Deshalb gibt es ja sowas wie urllib.quote, oder man läßt das requests automatisch machen. Wenn man ab 1 Zählen will, dann kann man das enumerate auch gleich sagen «enumerate(results, 1)». Und für csv-Dateien gibt es ein Modul, das das besser kann.
Re: Fehler im Script?
Verfasst: Sonntag 3. Januar 2016, 13:04
von pixewakb
Bei mir hat gestern die Zeit zu mehr nicht gereicht und ab heute muss ich durcharbeiten, d. h. da werde ich es nicht unbedingt schaffen, das noch zu ändern. (Ich bitte um Verständnis!)
Aus meiner Sicht. Obiges Skript liefert dir für die ersten 10 Google-Treffer auch die Links zu den Webseiten. Du müsstest mal schauen, ob du damit weiterkommst. Letztlich müsstest Du dann die 10 URLs wieder - wie bei der Google-Seite - parsen, also noch mal eine Schleife durchlaufen. Einen Teil der Funktionalität kann man m. E. in eine Funktion packen und dann immer mal wieder aufrufen.
An die Shopsoftware kommst Du m. E. nur heran, wenn die das in dem Quelltext nicht herausgenommen haben.
Das steht meistens im meta-Tag generator, dazu:
http://www.web-consultant.at/joomla-cms ... -entfernen
Die meisten werden es wohl verbergen. Da kann man es trotzdem über verräterische id oder class-Elemente rausfischen, ist aber einiges zu programmieren.