perlunity.de - PERL | JAVASCRIPT | PHP | MySQL | APACHE



#!/COMMUNITY

Members: 5374
davon online: 1
weitere User: 18
Click for quality!




12.02.2012 / 03:10

Community-Member werden   |   Paßwort vergessen   |   OnlineMonitor (1) Wer ist online ... OnlineMonitor starten !
     

 

Home


PERLscripts


PHPscripts


JAVAscripts


Hilfreiches


Links2www


Newscenter


Community


Interna




Community  »  Perl/CGI: Scripts des Perl-Archiv zur Themenübersicht Themensuche Themenansicht in Thread-Modus


BeitragIO::Socket ,ausgabe speichern
Seitenanfang
Hallo!
Ich habe ein Problem!
Ich habe ein "Googler" Programm gemacht welches mir alle Seiten aus dem Source-code von Google ausliest und ausgibt!
Jetzt möchte ich die Seiten aber noch in einer Datei speichern,allerdings geht das nicht richtig da ich dann jede seite 5 mal habe und durch \n rießige Lücken entsehen was dann ungefähr so aussieht
http://www.site.com
http://www.site.com
http://www.site.com
http://www.site.com
http://www.site.com

http://www.site1.com
http://www.site1.com
http://www.site1.com
http://www.site2.com

Das geht einfach nicht!
Ich möchte das jede seite einzeln eingetragen wird und keine solchen lücken enstehen!
Hier ist der Code:
use IO::Socket;
while ($i<360) {
$i++;
$i+=9;
$sock = IO::Socket::INET->new( Proto => "tcp", PeerAddr => "www.google.de", PeerPort => "80") || die "[-]Connect Failed\r\n";
print $sock "GET /search?q=hallo&hl=de&hs=H3K&lr=&client=firefox-a&rls=org.mozilla:de:official_s&start=".$i."&sa=N HTTP/1.1\n";
print $sock "Host: www.google.de\n";
print $sock "Accept: */*\n";
print $sock "Connection: close\n\n";
while($res = <$sock>){
$res =~ m/<a class=l href="(.*?)">/ && print "$1\n";
open(found,">>found11.txt");
foreach $name ($1) {
print found join("\n",$name),"\n";
}
}
}
ich habe es auch schon mit:
open(file, ">test.txt");
print file "alles\n";
close(file);
probiert,aber es ist immer wieder das gleiche!
Weiß jemand wie man das umgehen kann bzw anders machen kann?

Ich hoffe ihr könnt mir helfen!

Datum: 24.07.2006-21:12

Beitragre: IO::Socket ,ausgabe speichern
Seitenanfang
Find ich gut.

Ich habe kurz zuvor ein Programm laufen lassen, dass die Variable $i als Zähler verwendet hat. Nun lass ich das andere Programm laufen und zufälligerweise alloziert es die selben Speicherzellen (Da steckt man nie drin!). Im anderen Programm ist mein $i aber auf 586 gestanden. Ich wünsche viel Spaß bei der Fehlersuche.

Also:


my $i = 0;
while ( $i < 360 ) {
#...do something
}

Ansonsten würde ich doppelt hintereinander folgende LineFeeds löschen.


$var = s/(\n\n|\r\n\r\n)/\n/g;

Schönen Tag.

-uw

Datum: 25.07.2006-04:06

Beitragre: IO::Socket ,ausgabe speichern
Seitenanfang
Das Funktioniert irgendwie nicht:
my $i = 0;
while ( $i < 360 ) {
#...do something
}
Also Dann:
use IO::Socket;
while ($i<360) {
$i++;
$i+=9;
$sedsock = IO::Socket::INET->new( Proto => "tcp", PeerAddr => "www.google.de", PeerPort => "80") || die "[-]Connect Failed\r\n";
print $sock "GET /search?q=inurl:%22page=%22+inurl:%22.asp%3D%22&hl=de&hs=H3K&lr=&client=firefox-a&rls=org.mozilla:de:official_s&start=".$i."&sa=N HTTP/1.1\n";
print $sock "Host: www.google.de\n";
print $sock "Accept: */*\n";
print $sock "Connection: close\n\n";
while($res = <$sock>){
$res =~ m/<a class=l href="(.*?)">/ && print "$1\n";
my $i = 0;
while ( $i < 360 ) {

open(found,">>found11.txt");
foreach $name ($1) {
print found join("","$1"),"\n";
}}
}
}
dann passiert garnichts :(

Bitte helft mir!

Datum: 25.07.2006-13:08

Beitragre: IO::Socket ,ausgabe speichern
Seitenanfang
oh ich muss das $sedsock noch auf $sock ändern...
aber es passiert trozdem nichts :(

Datum: 25.07.2006-13:09

Beitragre: IO::Socket ,ausgabe speichern
Seitenanfang
Erstmal: Benutze immer strict. (use strict;)

Zweitens:
einfach testen ob die varaible die du in das FILE schreiben willst mit was gefüllt ist (if ($foo ne "" && $foo ne " " && $foo ne "\n") {print FILE "$foo\n";}

Datum: 04.10.2006-21:13

-






-
-