Why Selenium?
有些網(wǎng)頁(yè)內(nèi)容是在瀏覽器端動(dòng)態(tài)生成的,直接Http獲取網(wǎng)頁(yè)源碼是得不到那些元素的。
Selenium可以自動(dòng)啟動(dòng)一個(gè)瀏覽器、打開(kāi)網(wǎng)頁(yè),可以用程序操作頁(yè)面元素,也可以獲得瀏覽器當(dāng)前頁(yè)面動(dòng)態(tài)加載的頁(yè)面元素。
比如:百度圖片的圖片是動(dòng)態(tài)加載的。
用法:
1、下載安裝Chrome瀏覽器。
2、下載Chrome對(duì)應(yīng)版本的Selenium? chromeDriver
鏡像文件?
Index of chromedriver-local
查找版本相似的下載
我是Windows系統(tǒng),就下Windows版本
下載好,把文件放在你Chrome瀏覽器的同一級(jí)文件夾下?
3、將chromeDriver 放在chrome瀏覽器根目錄下,它負(fù)責(zé)對(duì)Chrome瀏覽器執(zhí)行自動(dòng)化操作
4、程序通過(guò)Maven安裝包:selenium-java,它和chromeDriver通訊。
下載百度圖片的圖片
自動(dòng)的將網(wǎng)頁(yè)打開(kāi)
百度圖片的圖片是動(dòng)態(tài)加載的。
System.setProperty("webdriver.chrome.driver", chromedriver的路徑);
ChromeDriver driver = new ChromeDriver();
String url=百度圖片網(wǎng)址;
driver.get(url);
List<WebElement> imgs = driver.findElement(By.className("imglist")).findElements(By.tagName("img"));
for(int i=0;i<imgs.size();i++)
{
? WebElement img = imgs.get(i);
? String imgSrc = img.getAttribute("data-imgurl");
? byte[] bytes = new HttpSender().sendGetBytes(imgSrc);//yzk18-net
? ImageType imgType = ImageHelpers.detectImageType(bytes);//yzk18-commons
? IOHelpers.writeAllBytes("e:/temp/"+i+"."+imgType,bytes);
}
driver.close();
driver.quit();
More
package Part6;
import com.yzk18.commons.IOHelpers;
import com.yzk18.net.HttpSender;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import java.util.List;
public class SeleniumTest1 {
public static void main(String[] args) throws InterruptedException {
System.setProperty("webdriver.chrome.driver","C:\\Users\\PC\\Desktop\\Google\\Chrome\\Application/chromedriver.exe");
ChromeDriver driver=new ChromeDriver();
/*
driver.get("https://image.baidu.com/");
WebElement kw =driver.findElement(By.id("kw"));//findElement如果有多個(gè),就返回第一個(gè),如果都沒(méi)有就拋異常
kw.sendKeys("白姨");
WebElement s_newBtn=driver.findElement(By.className("s_newBtn"));
s_newBtn.click();
*/
driver.get("https://image.baidu.com/search/index?tn=baiduimage&ipn=r&ct=201326592&cl=2&lm=-1&st=-1&fm=result&fr=&sf=1&fmq=1658837529512_R&pv=&ic=0&nc=1&z=&hd=&latest=©right=&se=1&showtab=0&fb=0&width=&height=&face=0&istype=2&dyTabStr=&ie=utf-8&sid=&word=%E5%8E%9F%E7%A5%9E%E7%99%BD%E5%A7%A8");
List<WebElement> imgs =driver.findElements(By.className("imgitem"));
int i=1;//文件名計(jì)數(shù)
for (WebElement img:imgs){
String imgUrl=img.getAttribute("data-thumburl");
System.out.println(imgUrl);
String imgText=img.findElement(By.className("imgitem-title")).getText();
imgText=imgText.replace("*","").replace("?","").replace("|","").replace("/","").replace("\\","");
// 保存圖片
byte[] bytes=new HttpSender().sendGetBytes(imgUrl);
IOHelpers.writeAllBytes("D:\\temp\\爬蟲\\圖片/1/"+imgText+i+".jpeg",bytes);
i++;
}
Thread.sleep(5000);
driver.close();
driver.quit();
}
}
?
為什么只爬了幾張,這個(gè)涉及到了計(jì)算機(jī)的虛擬模式概念。?
獲取更多圖片?文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-645245.html
頁(yè)面滾動(dòng),但是有虛模式的問(wèn)題需要處理。還有反反爬、代理、驗(yàn)證碼…………。爬蟲入門容易,如果精通則需要是優(yōu)秀的網(wǎng)站開(kāi)發(fā)者(前端+后端)。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-645245.html
到了這里,關(guān)于Java學(xué)習(xí)筆記:爬蟲-操作動(dòng)態(tài)網(wǎng)頁(yè)的Selenium的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!