1、相關(guān)jar包
jsoup-1.11.2.jar
log4j-1.2.8.jar
selenium-server-standalone-2.40.0.jar
可以自行找其它版本的jar包代替思币。
2嫩絮、下載chromeDriver悴品,并完成相關(guān)配置
注意:chromeDriver與chrome版本有關(guān)语盈,如果版本不一致會發(fā)生錯誤沙合。
下載chromeDriver:http://chromedriver.storage.googleapis.com/index.html
下載時一定要看清版本
chromeDriver下載完成之后积糯,將chromeDriver.exe 放在chrome瀏覽器根目錄下绊茧,或者在配置環(huán)境變量铝宵,為了方便我直接把chromeDriver.exe 放在了瀏覽器根目錄下。
chrome.png
3华畏、程序,以解析簡書為例
3.1鹏秋、初始化一個webDriver,并通過傳入的網(wǎng)址獲取到該網(wǎng)址的源碼(打開瀏覽器亡笑,不能向下滑動)
/**
* 打開瀏覽器侣夷,不能向下滑動
* @param url
* @return
*/
public static Document getDocument(String url){
Document doc = null;
//可使用的瀏覽器有:IE瀏覽器(webdriver.ie.driver)
//火狐瀏覽器 (webdriver.gecko.driver)
//谷歌瀏覽器 (webdriver.chrome.driver)
// 是使用那個瀏覽器 chromedriver所在的位置
System.setProperty("webdriver.chrome.driver", "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe");
// InternetExplorerDriver() 瀏覽器
// FirefoxDriver() 火狐瀏覽器
//谷歌瀏覽器
WebDriver driver = new ChromeDriver();
driver.get(url);
//等待幾秒
try {
//((JavascriptExecutor)driver).executeScript("scrollTo(0,10000)");
Thread.sleep(20000);
} catch (InterruptedException e) {
e.printStackTrace();
}
doc = Jsoup.parse(driver.getPageSource());
//關(guān)閉瀏覽器
driver.close();
driver.quit();
return doc;
}
3.2、解析獲取到的內(nèi)容
/**
* 解析傳過來的doc
* @param doc
*/
public static void parse(Document doc){
if(doc == null){
logger.info("doc is null, unable to continue! ");
return ;
}
Elements content = doc.select("div.content");
//System.out.println(select);
for (Element element : content) {
//獲取文章標(biāo)題
String title = element.select("a.title").text();
//獲取獲取帖子網(wǎng)址
String url = element.select("a.title").attr("href");
url = "http://www.reibang.com" + url;
//獲取文章的摘要
String digest = element.select("p.abstract").text();
//獲取文章作者名稱
String author = element.select("a.nickname").text();
//獲取作者網(wǎng)址
String authorUrl = element.select("a.nickname").attr("href");
authorUrl = "http://www.reibang.com" + authorUrl;
logger.info("title: " + title);
logger.info("url: " + url);
logger.info("digest: " + digest);
logger.info("author: " + author);
logger.info("authorUrl: " + authorUrl);
logger.info("--------------\n");
}
}
3.3仑乌、查看測試結(jié)果
result.png
3.4百拓、打開瀏覽器,滾動條向下滑動
/**
* 打開瀏覽器晰甚,向下滑動
* @param url
* @return
*/
public static Document getDocument(String url){
Document doc = null;
//可使用的瀏覽器有:IE瀏覽器(webdriver.ie.driver)
//火狐瀏覽器 (webdriver.gecko.driver)
//谷歌瀏覽器 (webdriver.chrome.driver)
// 是使用那個瀏覽器 chromedriver所在的位置
System.setProperty("webdriver.chrome.driver", "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe");
// InternetExplorerDriver() 瀏覽器
// FirefoxDriver() 火狐瀏覽器
//谷歌瀏覽器
WebDriver driver = new ChromeDriver();
driver.get(url);
//等待幾秒
try {
//向下滾動 方法一
//JavascriptExecutor js = (JavascriptExecutor)driver;
//js.executeScript("scrollTo(0,20000)");
//向下滾動 方法二
((JavascriptExecutor)driver).executeScript("scrollTo(0,10000)");
Thread.sleep(20000);
} catch (InterruptedException e) {
e.printStackTrace();
}
doc = Jsoup.parse(driver.getPageSource());
//關(guān)閉瀏覽器
driver.close();
driver.quit();
return doc;
}
3.5衙传、不打開瀏覽器
/**
* 瀏覽器后臺運(yùn)行,向下滑動
* @param url
* @return
*/
public static Document getDocument(String url){
Document doc = null;
//可使用的瀏覽器有:IE瀏覽器(webdriver.ie.driver)
//火狐瀏覽器 (webdriver.gecko.driver)
//谷歌瀏覽器 (webdriver.chrome.driver)
// 是使用那個瀏覽器 chromedriver所在的位置
System.setProperty("webdriver.chrome.driver", "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe");
// InternetExplorerDriver() 瀏覽器
// FirefoxDriver() 火狐瀏覽器
//谷歌瀏覽器
WebDriver driver = null;
//創(chuàng)建chrome參數(shù)對象
ChromeOptions options = new ChromeOptions();
//瀏覽器后臺運(yùn)行
options.addArguments("headless");
driver = new ChromeDriver(options);
driver.get(url);
//等待幾秒
try {
//向下滾動 方法一
//JavascriptExecutor js = (JavascriptExecutor)driver;
//js.executeScript("scrollTo(0,20000)");
//向下滾動 方法二
((JavascriptExecutor)driver).executeScript("scrollTo(0,10000)");
Thread.sleep(20000);
} catch (InterruptedException e) {
e.printStackTrace();
}
doc = Jsoup.parse(driver.getPageSource());
//關(guān)閉瀏覽器
driver.close();
driver.quit();
return doc;
}