網路爬蟲技術,如何實現登入破解,案例分享!
阿新 • • 發佈:2019-01-24
有時候大家在爬蟲的時候會遇到要登入的情況,如果不登入則爬不到自己想要的東西,那麼如何解決呢?這裡大家也可以多思考利用什麼方式可以達到目的。
這裡以部落格園為例,here we go~~
首先簡單的介紹一下selenium和phantomJS:
selenium是一款測試工具,能夠模擬使用者對瀏覽器進行操作。
phantomJS是一款輕便式瀏覽器,其沒有介面並且功能相對簡單,因此速度上會比較快速。
說到這大家應該明白selenium+phantomJS如何實現登入破解了,對,就是模擬人工操作。
我們現看一下部落格園的登入介面:
找到這些元素所在的點,填寫賬號密碼,並且點選登入按鈕,之後等待一段時間,因為頁面載入需要時間,之後就可以爬取登陸後的介面:
話不多說,直接上程式碼:
package com.eversec.crawler; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.phantomjs.PhantomJSDriver; import org.openqa.selenium.phantomjs.PhantomJSDriverService; import org.openqa.selenium.remote.DesiredCapabilities; import java.util.List; import java.util.concurrent.TimeUnit; /** * Created by tyx on 2017/9/14. * 通過selenium+phantomJS登入部落格園 */ public class CnblogLogin { public static void main(String[] args) throws Exception{ DesiredCapabilities desiredCapabilities = new DesiredCapabilities(); //ssl證書支援 desiredCapabilities.setCapability("acceptSslCerts", true); //截圖支援 desiredCapabilities.setCapability("takesScreenshot", true); //css搜尋支援 desiredCapabilities.setCapability("cssSelectorsEnabled", true); //js支援 desiredCapabilities.setJavascriptEnabled(true); //驅動支援 desiredCapabilities.setCapability(PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY,"D:\\phantomjs-2.1.1-windows\\phantomjs-2.1.1-windows\\bin\\phantomjs.exe"); //建立無介面瀏覽器物件 WebDriver webDriver = new PhantomJSDriver(desiredCapabilities); try { webDriver.get("https://passport.cnblogs.com/user/signin?ReturnUrl=https%3A%2F%2Fwww.cnblogs.com%2F"); WebElement usernameEle = webDriver.findElement(By.id("input1")); WebElement passwordEle = webDriver.findElement(By.id("input2")); // 設定賬號密碼 usernameEle.sendKeys(""); passwordEle.sendKeys(""); WebElement loginButtom = webDriver.findElement(By.id("signin")); loginButtom.click(); webDriver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS); List<WebElement> elements = webDriver.findElements(By.xpath("//a[@class='titlelnk']")); for (WebElement element : elements){ System.out.println(element.getText()); } }catch (Exception e){ e.printStackTrace(); }finally { webDriver.close(); webDriver.quit(); } } }
執行後結果如下:
以上就是關於‘用selenium+phantomJS實現簡單的登入破解’的全部內容了,如果你有其他的方法或者更好的建議,留言一起交流。