#1  (Permalink
Alt 01.08.2020, 12:44
ghor ghor ist offline
Senior Mitglied
 
Registriert seit: 30.10.2006
Beiträge: 550
Provider: 1&1
Beitrag Script für Verkaufs- und Verschenke-Anzeigen auf ebay-Kleinanzeigen

Habe mir ein Script gebastelt, was von einer Verkaufs- oder Verschenke-Anzeige bei ebay-kleinanzeigen die Bilder runterlädt (als 1.jpg 2.jpg usw.) und die Infos der Anzeige wie Preis und Beschreibung in eine Text-Datei schreibt,

die dann z.B. so aussieht:
Zitat:
Kategorie:
Kleinanzeigen_Marburg Auto,_Rad_&_Boot Fahrräder_&_Zubehör
-----------------------------------
Titel:
****** Fahrrad 28 Zoll ******
-----------------------------------
Preis:
***** 35 â<U+0082>¬ *****
-----------------------------------
Art:
* Art Damen
Text:
***** Beschreibung *****
Hallo
Verkaufe ein Fahrrad
Alles funktioniert einwandfrei
Sofort fahrbereit

35â<U+0082>¬ VB

***** Nachricht schreiben *****
-----------------------------------
Bilder: 3

Vielleicht hat ja jemand Verwendung dafür? Ist nichts dolles, nicht perfekt und kann man bestimmt noch besser machen, erfüllt aber seinen Zweck.

Umlaute und Euro-Zeichen sind falsch und muss man sich denken. Man benötigt die Pakete/Programme wget und html2text.


Hier das Script:

Zitat:
#!/bin/bash

rm *.jpg 2>/dev/null

wget -q -O test.html $1

html2text test.html > test.txt
echo "Kategorie: " > info.txt
grep "^Kleinanzeigen" test.txt >> info.txt
echo "-----------------------------------" >> info.txt
echo "Titel: " >> info.txt
grep "^\*\*\*\*\*\*" test.txt >> info.txt
echo "-----------------------------------" >> info.txt
echo "Preis: " >> info.txt
grep "^\*\*\*\*\* " test.txt | head -1 >> info.txt
echo "-----------------------------------" >> info.txt
echo "Art: " >> info.txt
grep " * Art " test.txt >> info.txt
echo "Text: " >> info.txt
grep -A 22 "^\*\*\*\*\* Be" test.txt |grep -B 100 "^\*.* Nach" >> info.txt

a=`cat test.html | grep "url.*_59" | cut -d"'" -f2`
n=1
for i in $a; do
wget -q -O $n.jpg $i
n=`expr $n + 1`
done

n=`expr $n - 1`
echo "-----------------------------------" >> info.txt
echo "Bilder: $n" >> info.txt

rm test.html test.txt

Ein Verzeichnis anlegen und reinwechseln. Dort das Script speichern z.B. als eka-dl.sh und ausführbar machen (chmod u+x eka-dl.sh)
Aufruf: ./eka-dl.sh <URL zur Anzeige>
z.B.: ./eka-dl.sh https://www.ebay-kleinanzeigen.de/s-...92151-217-4832
Im Verzeichnis sind danach die Bilder und eine info.txt mit den Infos.

Geändert von ghor (01.08.2020 um 12:58 Uhr)
Mit Zitat antworten
  #2  (Permalink
Alt 01.08.2020, 14:28
ghor ghor ist offline
Senior Mitglied
 
Registriert seit: 30.10.2006
Beiträge: 550
Provider: 1&1
Standard AW: Script für Verkaufs- und Verschenke-Anzeigen auf ebay-Kleinanzeigen

Mit dem Umlauten etc. klappt es auch, wenn man die Zeile mit html2text ändert in:
Code:
html2text -ascii test.html > test.txt
Und die mit "grep -A" besser ändern in:
Code:
grep -A 100 "^\*\*\*\*\* Be" test.txt |grep -B 100 "^\*.* Nach" >> info.txt
Mit Zitat antworten
  #3  (Permalink
Alt 03.08.2020, 10:18
ghor ghor ist offline
Senior Mitglied
 
Registriert seit: 30.10.2006
Beiträge: 550
Provider: 1&1
Standard AW: Script für Verkaufs- und Verschenke-Anzeigen auf ebay-Kleinanzeigen

Und hier mit Python3:
Code:
#!/usr/bin/env python3

import mechanicalsoup
import requests
import sys
import os

filelist = [ f for f in os.listdir(".") if f.endswith(".jpg") ]
for f in filelist:
    os.remove(os.path.join(".", f))


browser = mechanicalsoup.Browser(soup_config={'features': 'lxml'},user_agent='MyBot/0.1: mysite.example.com/bot_info')

if len(sys.argv) < 2:
    print("Parameter fehlt!")
    exit(1)

url = sys.argv[1]

page = browser.get(url)

if len(page.soup.find_all("div",class_="outcomemessage-warning")) > 0:
    print("Problem mit Anzeige")
    exit(1)

print("----------------------------------------------------")
print("Titel:")
print(page.soup.find(property="og:title").attrs['content'])
print("----------------------------------------------------")
print("Preis:")
a = page.soup.find(id="viewad-price")
if a == None:
    print("Kein Preis")
else:    
    print(a.text.strip())

print("----------------------------------------------------")
print("Bilder:")
i=1
for x in page.soup.find_all(id="viewad-image"):
    print(x.attrs['src'])
    lnk=x.attrs['src']
    with open(str(i)+".jpg","wb") as f:
        f.write(requests.get(lnk).content)
    i=i+1

print("----------------------------------------------------")
print("Kategorie:")
for x in page.soup.find_all(itemprop="title"):
    print(x.text.strip())

print("----------------------------------------------------")
print("Text:")
s=""
for x in page.soup.find(itemprop="description").contents:
    if isinstance(x, str):
        s+=x.strip()
    else:
        s+="\n"
print(s)

print("----------------------------------------------------")
print("Details:")
for x in page.soup.find_all("span",class_="addetailslist--detail--value"):
    print(x.text.strip())
print("----------------------------------------------------")
Man braucht MechanicalSoup: https://mechanicalsoup.readthedocs.i...l#installation
Infos werden nicht in Datei geschrieben, nur ausgegeben.
Mit Zitat antworten
  #4  (Permalink
Alt Gestern, 20:49
Pornstar Pornstar ist offline
Senior Mitglied
 
Registriert seit: 21.04.2017
Ort: 192.26
Beiträge: 2.760
Standard AW: Script für Verkaufs- und Verschenke-Anzeigen auf ebay-Kleinanzeigen

Danke kann ich demnächst gut gebrauchen. Die Bilder die ich von einem Kleinanzeigen Angebot gespeichert hatte, haben mir bei einer Anzeige wegen einem geklauten Fahrrad mal die Hose gerettet. Mit Artikelbeschreibung hier noch besser.
Mit Zitat antworten
  #5  (Permalink
Alt Heute, 08:51
ghor ghor ist offline
Senior Mitglied
 
Registriert seit: 30.10.2006
Beiträge: 550
Provider: 1&1
Standard AW: Script für Verkaufs- und Verschenke-Anzeigen auf ebay-Kleinanzeigen

Freut mich, wenn es nützlich ist.

Bin noch Anfänger mit Mechanicalsoup, daher kann man da bestimmt auch einiges verbessern.
Wenn ich eine meiner EKA Anzeigen (z.B. auf anderer Plattform) neu aufgeben will, musste ich u.a. erst händisch im Browser die Bilder speichern (und den Rest). Daher wollte ich das automatisieren.


Bei Github gibt es auch eine beachtliche Menge "Zeugs" zu ebay-Kleinanzeigen:
https://github.com/search?q=ebay+kleinanzeigen
z.B.: https://github.com/davidgengenbach/e...zeigen-crawler
https://github.com/tschuehly/flathunter
Mit Zitat antworten
  #6  (Permalink
Alt Heute, 10:02
ghor ghor ist offline
Senior Mitglied
 
Registriert seit: 30.10.2006
Beiträge: 550
Provider: 1&1
Standard AW: Script für Verkaufs- und Verschenke-Anzeigen auf ebay-Kleinanzeigen

Manchmal bekomme ich beim Testen mit meinem / den python-Scripten den Status Code 403 (oder so), also keine richtige Anzeige geliefert.
Gewisse Zeit später geht es dann wieder.
Konnte noch nicht feststellen, woran das liegt, scheinbar lässt EKA manchmal scriptbasierte Anfragen nicht zu.
Um sowas zu sehen, muss man sich den Quelltext der empfangenen Daten anzeigen lassen. Dazu am besten nach dem letzten exit(1) einfügen:
Code:
print(page.soup.prettify())
Also so:
Code:
if len(page.soup.find_all("div",class_="outcomemessage-warning")) > 0:
    print("Problem mit Anzeige")
    exit(1)

print(page.soup.prettify())

print("----------------------------------------------------")
Mit Zitat antworten
 
Anzeige
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
auch die lokalen Anzeigenblätter + webAnzeigen schmerzen => KleinAnzeigen.ebay.de 1cm.de Newskommentare 0 18.09.2009 14:31
verkaufs formular Mib2001 Sonstiges 1 06.01.2003 17:30
Script für Kleinanzeigen gesucht Athlon Sonstiges 3 05.09.2001 07:34
Frage an die Kreativen: Wie verschenke ich am besten eine URL? Ehemalige Benutzer Small Talk 11 01.05.2001 20:12


Alle Zeitangaben in WEZ +2. Es ist jetzt 20:18 Uhr.


Basiert auf vBulletin®
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.