curl.exe Internetzugriff

aquarium1974

Aktives Mitglied
Hallo zusammen,

ich versuche gerade mit curl.exe ein paar Datensätze automatisiert aus guenstiger.de rauszuziehen. Dabei wird das Form beim submit mit get versendet.

Ich krieg nur das get nicht zusammengebastelt, daß curl.exe das schön bearbeiten kann.
Hat jemand Zeit/Lust sich der Sache mal anzunehmen?

Java:
public void auslesenMitCurl(String strErgebnis) {
		String strPath = "", strProduktname = "", strProduktname2 = "", strAufrufGuenstiger = "";
		try {
			// bufferedReader um .bat-Datei anzupassen

			strProduktname = strErgebnis.substring(0, strErgebnis.indexOf(";"));
			strProduktname = strProduktname.trim();
			strProduktname2 = strProduktname.replace(" ", "_");

			System.out.println("Produktname: " + strProduktname2);

			strPath = "d://eigenes//projekt_hr//curl_hr_v009.bat ";

//			strAufrufGuenstiger = "http://www.guenstiger.de/Katalog/Suche/"
			strAufrufGuenstiger = "http://www.guenstiger.de/Preisvergleich/"
					+ strProduktname2 + ".html";
			System.out.println(strAufrufGuenstiger);

			Runtime rt = Runtime.getRuntime();
			rt.exec("cmd /C start /min " + strPath + strAufrufGuenstiger);

			// + " -o d:\\eigenes\\projekt_hr\\hr.htm";
			System.out.println("auslesen...");
			Process p = Runtime.getRuntime()
					.exec(strPath + strAufrufGuenstiger);
			// cmd /c start d:\eigenes\projekt_hr\curl_hr_v002.bat
			p.waitFor();
			System.out.println(p.exitValue());
		} catch (Exception err) {
			err.printStackTrace();
		}

	}
Wenn ich das richtig sehe mache ich hier mit statischem HTML eine Anfrage, ich will aber das get so formulieren wie es die Webseite auch versendet.

Und die .bat-Datei:
Code:
c:\curl\curl.exe %1 -o "d:\eigenes\projekt_hr\aktuelles_produkt.html"


Danke


AQ
 
Zuletzt bearbeitet von einem Moderator:

Lumaraf

Bekanntes Mitglied
Spar dir den umständlichen Aufruf von curl und ruf die Seite einfach mit
Code:
new URL("http://www.guenstiger.de/Preisvergleich/" + strProduktname2 + ".html").openStream()
ab.
 

aquarium1974

Aktives Mitglied
Kann es sein, daß billiger.de Anfragen > 100 in kurzer Zeit sperrt?
Ich will ein paar mehr Artikel auslesen, aber mein Script bleibt immer an unterschiedlichen Stellen stehen?!?
Mal 20, 50, 100, 200 usw.

Sollte man da über 10 verschiedene Proxies gehen um die Anfragen zu verteilen?!?!?

Gruss

AQ
 
S

Speed.io

Gast
Ich würde hier eher darauf Tippen das deine Software bzw deine Hardware einfach nicht mehr hinterher kommt mit der Masse an Anfragen. Weil das der Server diesen kleinen Performance-Ansteig als "Flood" erkennt kann ich mir eher weniger vorstellen.

Wie aber bereits gesagt : du willst Java programmieren, der Sinn dahinter ist aber nicht System-Calls auszuführen was man auch mit BATch machen kann.
Nutze also Java-interne Mittel wie URL, Socket, Input/OutputStream oder Frameworks wie Apache Commons.
 

aquarium1974

Aktives Mitglied
hallo,

ja, der hängenbleiber war wohl durch meinen code zu erklären....
hab jetzt url und openstream eingebaut und es läuft durch...
1000 mal besser als dieser kram mit dem batch..... :)

geil!
danke!!!!! :applaus:
 
T

tuxedo

Gast
Weil das der Server diesen kleinen Performance-Ansteig als "Flood" erkennt kann ich mir eher weniger vorstellen.

Im Fall von billiger.de mag das funktionieren. Bei anderen Seiten hab ich da andere Erfahrungen gemacht. Bei meiner eigenen Webseite hab ich z.B. eine iptables-Regel die mehr als 50 Anfragen pro Sekunde blockiert, eben um solche Floodings zu unterbinden und etwas last vom Server zu nehmen (hatte schon mehrere ddos-artige Angriuffe wo sich Scherzkekse aus verschiedenen Ländern den Spaß gemacht haben meinen Server mit sinnfreien Anfragen zu quälen). Ist also für die Betreiber wirklich kein Akt dagegen vorzugehen. Ist eine einzige iptables-Zeile ...

[update]
okay, um genau zu sein: es sind zwei zeilen iptables-Regeln: Using iptables to rate-limit incoming connections
 
Zuletzt bearbeitet von einem Moderator:
T

tuxedo

Gast
Solange es ohne funktioniert geht's natürlich auch ohne. Aber wenn die spitzkriegen dass du deren Webseite parst, dann werden die irgendwann etwas dagegen unternehmen.

Und dann bleiben dir in der Tat nur diese zwei Dinge:

1) Polling-Intervall verlängern --> macht deine Abfrage dann natürlich langsamer
2) Von mehr als nur einer IP pollen --> aufwendiger, aber im Endeffekt wohl schneller. Musst nur vorsichtig sein dass deine verwendeten IPs (die der Proxies) nicht generell geblockt werden. Denn dann ist wieder Schluss mit lustig.

- Alex
 
S

Speed.io

Gast
Im Fall von billiger.de mag das funktionieren. Bei anderen Seiten hab ich da andere Erfahrungen gemacht. Bei meiner eigenen Webseite hab ich z.B. eine iptables-Regel die mehr als 50 Anfragen pro Sekunde blockiert, eben um solche Floodings zu unterbinden und etwas last vom Server zu nehmen (hatte schon mehrere ddos-artige Angriuffe wo sich Scherzkekse aus verschiedenen Ländern den Spaß gemacht haben meinen Server mit sinnfreien Anfragen zu quälen). Ist also für die Betreiber wirklich kein Akt dagegen vorzugehen. Ist eine einzige iptables-Zeile ...

[update]
okay, um genau zu sein: es sind zwei zeilen iptables-Regeln: Using iptables to rate-limit incoming connections

Ja klar, würde wenn ich einen eigenen Server hätte bestimmt ähnlich machen (zur Zeit keine finanziellen Mittel), aber ob man ähnliches bei "größeren" Anbietern findet ? Mag sein. Die einen so und die anderen anders. Aber ich denke das es doch ein sehr breites "Mittelfeld" gibt die sich gerade damit eher weniger auseinander setzen. Gerade bei "Neulingen" auf dem Gebiet des Hostings dürfte (wenn nicht gerade managed Server) diese "Lücke" noch offen sein.
 
T

tuxedo

Gast
Bei welchen "Neulingen" willst du denn die Seite parsen/auslesen?

billiger.de und Konsorten... Da stecken recht große Firmen dahinter. Die haben nicht nur eine Kiste um mit dem Anfrage-Ansturm der den ganzen Tag vorherrscht zurecht zu kommen.

Gut, billiger.de mag die Anzahl der Zugriffe pro bestimmtes Zeitfenster nicht sonderlich limitiert haben, so dass es für jetzt keine Rolle spielt. Aber man sollte, wenn man schon so eine Seite parst, darauf vorbereitet sein dass die's irgendwann tun. Sonst geht die Anwendung nimmer.

- Alex
 

Ähnliche Java Themen

Neue Themen


Oben