簡単なjavaはホームページのデータを登ります
17607 ワード
スタティツクウォーク
ダイナミックスキップ
静的なだけで目的のデータを取得できない場合があります.レンダリング後のページを取得する必要があります.1.ブラウザカーネルを内蔵することでjsレンダリング後のページを取得できます.このようなツールにはSelenium、HtmlUnit、PhantomJsがあります.PhantomJsは対応するブラウザカーネルをダウンロードしなければならないが、私のローカルとサーバのオペレーティングシステムが異なるため、PhantomJsは選択されていない.HtmlUnitはエラーが多すぎても2.cdb 4 j:ローカルchromeブラウザを呼び出すことは選択されていないが、サーバにはchromeエラーがない可能性がある.3.最後に対応する要求を直接読み出すことを選択してjsonデータを取得する.次にcdb 4 jの例を示す
public class HttpUtil {
public static Document get(String url, String charset) throws IOException {
String userAgent = "Mozilla/5.0 (Windows NT 6.1; Win64; x64) " +
"AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36";
URL url2 = new URL(url);
HttpURLConnection connection = (HttpURLConnection) url2.openConnection();
connection.setRequestMethod("GET");
// , true
connection.setUseCaches(Boolean.FALSE);
//
connection.addRequestProperty("Connection", "close");
connection.addRequestProperty("user-agent", userAgent);
// ( : )
connection.setConnectTimeout(80000);
// ( : )
connection.setReadTimeout(80000);
//
try {
Document doc = Jsoup.parse(connection.getInputStream(), charset, url);
return doc;
} catch (Exception e) {
System.out.println("parse error: " + url);
e.printStackTrace();
}
return null;
}
}
public static void testDoc(){
String url = "www.baidu.com";
Document doc = null;
try {
doc = HttpUtil.get(url , "utf-8");
System.out.println("doc:" + doc);
} catch (IOException e) {
e.printStackTrace();
}
}
ダイナミックスキップ
静的なだけで目的のデータを取得できない場合があります.レンダリング後のページを取得する必要があります.1.ブラウザカーネルを内蔵することでjsレンダリング後のページを取得できます.このようなツールにはSelenium、HtmlUnit、PhantomJsがあります.PhantomJsは対応するブラウザカーネルをダウンロードしなければならないが、私のローカルとサーバのオペレーティングシステムが異なるため、PhantomJsは選択されていない.HtmlUnitはエラーが多すぎても2.cdb 4 j:ローカルchromeブラウザを呼び出すことは選択されていないが、サーバにはchromeエラーがない可能性がある.3.最後に対応する要求を直接読み出すことを選択してjsonデータを取得する.次にcdb 4 jの例を示す
<dependency>
<groupId>io.webfolder</groupId>
<artifactId>cdp4j</artifactId>
<version>2.2.1</version>
</dependency>
public static void cdp(String url ){
ArrayList<String> command = new ArrayList<String>();
// google
command.add("--headless");
Launcher launcher = new Launcher();
try (SessionFactory factory = launcher.launch(command);
Session session = factory.create()) {
session.navigate(url);
session.waitDocumentReady();
String content = (String) session.getContent();
Document doc = Jsoup.parse(content);
Element dateElement = doc.getElementsByClass("post__description").get(0);
System.out.println("text:" + dateElement.text());
Element docElements = doc.getElementsByClass("post__body").get(0);
int i = 5;
Elements liElements = docElements.getElementsByTag("li");
for (Element element : liElements) {
if (i <= 0) break;
Element el = element.select("a").first();
String href = el != null ? el.attr("href") : "";
href = pre + href;
String title = element.select("a").text();
System.out.println(" href:" + href +" title:" + title);
i--;
}
System.out.println("end");
}