|
| |||
|
|
О "защите от копирования книг": Посидел в ванне - еще раз посмотрел на "защиту от литреса" - все оказалось еще примитивнее, чем я думал: Юзать: java -jar LIB-Read.jar dyachenko_marina mednyi_korol 30 >dyach.html (30 - число страниц) Но жаба в данном случае - стрельба из пушки по воробьям - я-то готовился подменять заголовки, с куками трахаться etc - а все оказалось не просто просто, а очень просто. Вылезу из ванны - может на bash перепишу - думаю, в строчки 3-4 влезет.
import org.apache.commons.httpclient.*;
import org.apache.commons.httpclient.methods.GetMethod;
import java.io.IOException;
import java.text.MessageFormat;
import java.util.regex.*;
public class Main {
private static HttpClient client = new HttpClient();
private static String bookUrl(String auth, String bk, int pg) { return MessageFormat.format("http://lib.aldebaran.ru/author/{0}/{0}_{1}/{0}_{1}__{2}.html", auth, bk, pg); }
public static void main(String[] args) {
for (int pg = 0; pg != Integer.parseInt(args [2]); ++ pg)
System.out.println(filter (get(getRef(getRef(bookUrl(args [0], args [1], pg+1))))) + "\n\n<hr>\n\n");
}
// удаление срача
private static String filter(String s) {
Matcher pattern = Pattern.compile("s \\+= '([^']*)';").matcher(s);
StringBuilder res = new StringBuilder();
while (pattern.find ()) res.append(pattern.group(1)).append("\n");
return Pattern.compile("(<span class=h>[^<]*</span>)").matcher(res.toString()).replaceAll("");
}
private static String get(String uri) {
final HttpMethod method = new GetMethod(uri);
try { client.executeMethod(method); return method.getResponseBodyAsString(); }
catch (IOException e) { e.printStackTrace(); return null; }
}
private static String getRef(String url) {
// return Pattern.compile("[\"'](http://[a-zA-Z0-9.-]+/getpage/[0-9]+/[0-9A-Fa-f]+)['\"]").matcher(get(url)).group(1);
final Matcher matcher = Pattern.compile("[\"'](http://[a-zA-Z0-9.-]+/getpage/[0-9]+/[0-9A-Fa-f]+)['\"]").matcher(get(url));
matcher.find ();
return matcher.group(1);
}
}
|
||||||||||||||