Witam,
Mam program który pobiera informacje ze strony filmweb.pl Problem jest w tym iz strona ta czesto wrzuca na powitanie reklame nad która jest link "przejdź do filmweb" Link jest javascriptowy. Czy jest jakis sposob ze "ominac" ta reklame?
Najlepiej wyrażeniem regularnym odfiltrować tylko to co Ciebie interesuje. W ten sposób z automatu ominiesz wszystkie nieinteresujące śmieci. Zapoznaj się z regexp.
Wykrywaj reklamę i przeładowuj stronę.
<a style="float: left; width: 250px; padding-top: 10px; font-family: Verdana,Tahoma,Geneva,sans-serif; font-style: normal; font-variant: normal; font-weight: bold; font-size: 17px; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(255, 255, 255); display: block;" href="http://www.filmweb.pl/" onclick="link();return false;">przejdź do Filmweb.pl</a>
to jest link na ktory musze przejsc. jak go podac do kodu programu. tzn jak wykonac javascriptowa funkcje.
Może ktoś wyjaśnić jakie w Javie zastosowanie mają serverlety, sockety i takie biblioteki jak httpclient w takich aplikacjach w których chce się utworzyć połączenie HTTP, FTP. Czy serverlety działają tylko na serwerze, czy tez po prostu można z nich korzystać do komnikacji z serwerem, czy może to być strona oparta na PHP , czy tylko na Javie ? Czy musze się przerzucić na sockety, aby wysłać informacje do kilku pól na raz?
Ja mam jescze bardziej podstawowy problemik. Szukałem bibliotek , które umożliwią interakcje ze stronami http://hc.apache.org/downloads.cgikie obiekty, jakimi metodami obsłużyć (np. Jak 'kliknac" w javie na przycisk"). A dodatkowo zaciołem się na próbie użycia metody POST i GET, ponieważ wszystko działa osobno, na wczytanych do konsoli stronach widac zmienione parametry danych pól, ale kiedy daje POST, potem GET to tekst wpisany w pole za pomocą POST znika, nie za bardzo wiem dlaczego, nie wydaje mi się bym zrywał polecenie, robie to na końcu, może to spowodowane tym, ze strona nie 'nadąża' ?
Biblioteki są tutaj: http://hc.apache.org/downloads.cgi, używam w tej chwili wersji 3
Mój kod, najpierw wysyłam dane do tłumaczenia, wybieram język i próbuje jakoś 'wcisnąc' przycisk translate (nie zabardzo wiem jak to się robi, jak 'klikac' na link).
package http_java;
import org.apache.commons.httpclient.*;
import org.apache.commons.httpclient.methods.*;
import java.io.FileOutputStream;
import java.io.IOException;
public class PostExample {
public static void main( String[] args ) {
String url = "http://babelfish.yahoo.com";
HttpClient client = new HttpClient();
PostMethod method = new PostMethod( url );
HttpMethod jezyk = new GetMethod(url);
HttpMethod OK = new GetMethod(url);
NameValuePair nvp1= new NameValuePair("lp","en_de");
NameValuePair nvp2= new NameValuePair("btnTrTxt","Translate");
try {
// Configure the form parameters
method.addParameter( "trtext", "Hello, How are you? What is your name?" );
// Execute the POST method
int statusCode1 = client.executeMethod( method );
if( statusCode1 != -1 ) {
String contents = method.getResponseBodyAsString();
// System.out.println( contents );
System.out.println(method.getResponseBodyAsString());
byte [] res = method.getResponseBody();
//write to file
FileOutputStream fos= new FileOutputStream("donepage.html");
fos.write(res);
}
}
// }
catch( Exception e ) {
e.printStackTrace();
}
jezyk.setQueryString(new NameValuePair[]{nvp1});
try{
int statusCode2 = client.executeMethod(jezyk );
System.out.println("QueryString>>> "+jezyk.getQueryString());
System.out.println("Status Text>>>"
+HttpStatus.getStatusText(statusCode2));
//Get data as a String
System.out.println(jezyk.getResponseBodyAsString());
//OR as a byte array
byte [] res = jezyk.getResponseBody();
//write to file
FileOutputStream fos= new FileOutputStream("donepage1.html");
fos.write(res);
}
catch(IOException e) {
e.printStackTrace();
}
OK.setQueryString(new NameValuePair[]{nvp2});
try{
int OKstatusCode = client.executeMethod(OK);
System.out.println("QueryString>>> "+OK.getQueryString());
System.out.println("Status Text>>>"
+HttpStatus.getStatusText(OKstatusCode));
//Get data as a String
if( (OKstatusCode != -1) ) {
String contents = method.getResponseBodyAsString();
System.out.println(OK.getResponseBodyAsString());
//OR as a byte array
byte [] res = OK.getResponseBody();
//write to file
FileOutputStream fos= new FileOutputStream("donepage2.html");
fos.write(res);
method.releaseConnection();
System.out.println( contents );
}
}
catch(IOException e) {
e.printStackTrace();
}
}
}