Hallo zusammen,
ich würde gerne eine bot haben der mir auf einer Website verschiedene Produkte sucht und mir anshließend gewisse Informationen zu dem Produkt auf der Website ausgibt.
Kann mir da einer weiterhelfen ?
LG Aura
Webscraping
- __blackjack__
- User
- Beiträge: 14053
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@Aura: In wiefern? Was ist das konkrete Problem dabei?
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Das lässt sich mit requests und BeauftifulSoup4 machen, oder auch mit Selenium. Schau dir paar Beispiele an oder die Dokumentationen und leg los, wenn du an einer Stelle nicht weiter kommst dann kannst du den Code gerne hier posten und wir versuchen da zu helfen. Ohne irgendwelche Informationen kann dir keiner Helfen.
-
- User
- Beiträge: 27
- Registriert: Donnerstag 17. September 2020, 08:07
@Aura ich habe mal einen kleinen Bot geschrieben, der hat mir dann Preise und die Artikelbeschreibung sowie die Bilder in eine CSV Datei geschrieben. Ich kann dir gerne den Quellcode zukommen lassen.
import requests
from bs4 import BeautifulSoup
URL = 'https://www.asdf.de'
page = requests.get(URL)
soup = BeautifulSoup(page.content, 'html.parser')
results = soup.find(id == 'h3')
print(results.text)
Ich bekomme immer den gesamten html Text ausgeworfen -- will aber nur den text von "h3" haben.
Wenn einer weiß wie ich den bot automatisiert ein Produkt in der Suchfunktion suchen lassen könnte und mir dann den Text ausgeben könnte wäre es mehr als hilfreich
LG Aura
from bs4 import BeautifulSoup
URL = 'https://www.asdf.de'
page = requests.get(URL)
soup = BeautifulSoup(page.content, 'html.parser')
results = soup.find(id == 'h3')
print(results.text)
Ich bekomme immer den gesamten html Text ausgeworfen -- will aber nur den text von "h3" haben.
Wenn einer weiß wie ich den bot automatisiert ein Produkt in der Suchfunktion suchen lassen könnte und mir dann den Text ausgeben könnte wäre es mehr als hilfreich

LG Aura
Der bot soll auf die Website gehen und dann in der Suchfunktion eine Artikelnummer suchen und danach mir im html text den text ausgeben -- und dieser dann in einer Datei speicher mit der zugehöhrigen Artikelnummer.
Als Beispiel: Geh auf Mediamarkt suche mir den Artikel und gebe mir alle (in dem Fall Technische Daten) aus. (Prozessor, Arbeitsspeicher usw.) und dieses soll er mir in einer Datei speicher mit der dazugehöhrigen Artikelnummer.
LG
Als Beispiel: Geh auf Mediamarkt suche mir den Artikel und gebe mir alle (in dem Fall Technische Daten) aus. (Prozessor, Arbeitsspeicher usw.) und dieses soll er mir in einer Datei speicher mit der dazugehöhrigen Artikelnummer.
LG
- __blackjack__
- User
- Beiträge: 14053
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@Aura: Interessantes verhalten von `BeautifulSoup.find()`. Du rufst das mit einem falschen Argument auf. Die eingebaute `id()`-Funktion ist immer ungleich irgendeiner Zeichenkette. Vermutlich sollte `id` ein Schlüsselwortargument sein. Wobei der Wert "h3" auch ein bisschen verdächtig ist — reden wir hier von dem ersten <h3>-Element oder gibt es tatsächlich ein Element mit einem `id`-Attribut mit dem Wert "h3"?
Der Namen `page` ist ein bisschen unpassend. Das Objekt enthält ein bisschen mehr als nur die Seite, oder unter Umständen auch gar keine Seite. `response` wäre passender. Und ich würde da auch die Antwort prüfen ob die überhaupt okay ist, oder ob der Server einen Fehler zurückgemeldet hat.
Der Namen `page` ist ein bisschen unpassend. Das Objekt enthält ein bisschen mehr als nur die Seite, oder unter Umständen auch gar keine Seite. `response` wäre passender. Und ich würde da auch die Antwort prüfen ob die überhaupt okay ist, oder ob der Server einen Fehler zurückgemeldet hat.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Ich brauche das h3 element und die untergeordneten tr bzw td elemente da in diesen der benötigte Text steht
das mit der Id hat im grunde keinen wert also er findet mir da nichts ... die antwort die ich bekomme ist im grunde der ganze html- text der auf der Seite erstichtlicht steht
also der gesuchte Text befindet sich auch darunter.
Wie kann ich das auf ein bestimmtes element eingränzen... ist mir noch ein fraglich
LG


Wie kann ich das auf ein bestimmtes element eingränzen... ist mir noch ein fraglich

LG
Ich kann auf die Seite www.asdf.de nicht zugreifen, kann also auch nichts über den Aufbau sagen. Innerhalb eines h3-Elements sind selten tr- bzw td-Elemente. Du mußt also schon die genau Struktur der Seite kennen.
Schon auf der Quick-Start-Seite stehen die wichtigsten Sachen um anzufangen. Generell sollte man wissen, dass in Python zwei Gleichheitszeichen etwas anderes bedeuten als ein Gleichheitszeichen.
Schon auf der Quick-Start-Seite stehen die wichtigsten Sachen um anzufangen. Generell sollte man wissen, dass in Python zwei Gleichheitszeichen etwas anderes bedeuten als ein Gleichheitszeichen.
- __blackjack__
- User
- Beiträge: 14053
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@Aura: Du suchst da weder nach einem `id`-Attribut noch nach irgend etwas mit "h3". Du vergleichst die `id()`-Funktion mit der Zeichenkette "h3" — was halt immer `False` ist:
Effektiv rufst Du also ``page.find(False)`` auf. Was keinen Sinn macht. Wenn Du nach dem ersten <h3>-Element suchen willst und überhaupt nicht nach einem `id`-Attribut, dann musst Du ``page.find("h3")`` ausführen.
Code: Alles auswählen
In [26]: id
Out[26]: <function id(obj, /)>
In [27]: id == "h3"
Out[27]: False
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
import requests
from bs4 import BeautifulSoup
from pip._vendor.urllib3 import response
URL = 'https://www.brack.ch/hp-notebook-250-g7 ... earch=true'
response = requests.get(URL)
soup = BeautifulSoup(response.content, 'html.parser')
Beschreibung = soup.find('div', class_='pdp__contentSection-leftSide')
Spezifikationen = soup.find('div', id = 'specifications-block')
Artikelnummer = soup.find('div',xmlns = 'http://www.w3.org/1999/xhtml' )
print(Artikelnummer.text)
Danke für die Hilfestellungen.
Wie man merkt bin ich etwas neu auf dem Gebiet.
So funktioniert es. hab leider das Problem dass ich bei der Beschreibung nur den ersten Absatz will und die weiteren Beschreibungen alle mit dem selben Element angeführt sind. Ich will aber nur den ersten. Bin da noch nicht dahinter gekommen wie er mir nur den ersten Absatz ausgibt
from bs4 import BeautifulSoup
from pip._vendor.urllib3 import response
URL = 'https://www.brack.ch/hp-notebook-250-g7 ... earch=true'
response = requests.get(URL)
soup = BeautifulSoup(response.content, 'html.parser')
Beschreibung = soup.find('div', class_='pdp__contentSection-leftSide')
Spezifikationen = soup.find('div', id = 'specifications-block')
Artikelnummer = soup.find('div',xmlns = 'http://www.w3.org/1999/xhtml' )
print(Artikelnummer.text)
Danke für die Hilfestellungen.

So funktioniert es. hab leider das Problem dass ich bei der Beschreibung nur den ersten Absatz will und die weiteren Beschreibungen alle mit dem selben Element angeführt sind. Ich will aber nur den ersten. Bin da noch nicht dahinter gekommen wie er mir nur den ersten Absatz ausgibt
