jsoup是一款Java的HTML解析器,可直接解析某個URL地址、HTML文本內(nèi)容。它供給了一套非常省力的API,可經(jīng)過DOM,CSS以及類似于jQuery的操作方法來取出和操作數(shù)據(jù)。
以博客園首頁為例
1、idea新建maven工程
pom.xml導(dǎo)入jsoup依靠
org.jsoup
jsoup
1.12.1
jsoup代碼
packagecom.blb;
importorg.jsoup.Jsoup;
importorg.jsoup.nodes.Document;
importorg.jsoup.nodes.Element;
importorg.jsoup.select.Elements;
importjava.io.IOException;
publicclassjsoup{undefined
publicstaticvoidmain(String[]args){undefined
//博客園首頁url
finalStringurl=”https://www.cnblogs.com”;
try{undefined
//先獲得的是整個頁面的html標簽頁面
Documentdoc=Jsoup.connect(url).get();
System.out.println(doc);
//能夠經(jīng)過元素的標簽獲取html中的特定元素
Elementstitle=doc.select(“title”);
Stringt=title.text();
System.out.println(t);
//能夠經(jīng)過元素的id獲取html中的特定元素
Elementsite_nav_top=doc.getElementById(“site_nav_top”);
Strings=site_nav_top.text();
System.out.println(s);
}catch(IOExceptione){undefined
e.printStackTrace();
}
}
}
該方法有個很大的局限性,便是經(jīng)過jsoup爬蟲只適合爬靜態(tài)網(wǎng)頁,所以只能爬當(dāng)前頁面的信息。
二、Webdriver技術(shù)
Selenium是一個瀏覽器自動化操作結(jié)構(gòu)。selenium主要由三種東西組成。
1.第一個東西——SeleniumIDE,是Firefox的擴展插件,支撐用戶錄制和回訪測試。錄制/回訪形式存在局限性,對許多用戶來說并不適合。
2.因此第二個東西——SeleniumWebDriver供給了各種語言環(huán)境的API來支撐更多操控權(quán)和編寫符合規(guī)范軟件開發(fā)實踐的運用程序。
3.最終一個東西——SeleniumGrid協(xié)助工程師運用SeleniumAPI操控散布在一系列機器上的瀏覽器實例,支撐并發(fā)運轉(zhuǎn)更多測試。
在項目內(nèi)部,它們分別被稱為“IDE”、“WebDriver”和“Grid”。
什么是Webdriver?
官網(wǎng)介紹:
WebDriverisaclean,fastframeworkforautomatedtestingofwebapps.(WebDriver是一個干凈、快速的web運用自動測試結(jié)構(gòu)。)
WebDriver針對各個瀏覽器而開發(fā),替代了嵌入到被測Web運用中的JavaScript。與瀏覽器的嚴密集成支撐創(chuàng)建更高檔的測試,避免了JavaScript安全模型導(dǎo)致的限制。除了來自瀏覽器廠商的支撐,WebDriver還利用操作系統(tǒng)級的調(diào)用模仿用戶輸入。WebDriver支撐Firefox(FirefoxDriver)、IE(InternetExplorerDriver)、Opera(OperaDriver)和Chrome(ChromeDriver)。它還支撐Android(AndroidDriver)和iPhone(IPhoneDriver)的移動運用測試。它還包括一個根據(jù)HtmlUnit的無界面完成,稱為HtmlUnitDriver。WebDriverAPI能夠經(jīng)過Python、Ruby、Java和C#訪問,支撐開發(fā)人員運用他們偏心的編程語言來創(chuàng)建測試。
WebDriver如何工作
WebDriver是W3C的一個規(guī)范,由Selenium主持。
詳細的協(xié)議規(guī)范能夠從http://code.google.com/p/selenium/wiki/JsonWireProtocol#Command_Reference查看。
從這個協(xié)議中我們能夠看到,WebDriver之所以能夠完成與瀏覽器進行交互,是因為瀏覽器完成了這些協(xié)議。這個協(xié)議是運用JOSN經(jīng)過HTTP進行傳輸。
它的完成運用了經(jīng)典的Client-Server形式??蛻舳税l(fā)送一個requset,服務(wù)器端返回一個response。
我們明確幾個概念。
Client
調(diào)用WebDriverAPI的機器。
Server
運轉(zhuǎn)瀏覽器的機器。Firefox瀏覽器直接完成了WebDriver的通訊協(xié)議,而Chrome和IE則是經(jīng)過ChromeDriver和InternetExplorerDriver完成的。
Session
服務(wù)器端需求保護瀏覽器的Session,從客戶端發(fā)過來的請求頭中包含了Session信息,服務(wù)器端將會履行對應(yīng)的瀏覽器頁面。
WebElement
這是WebDriverAPI中的目標,代表頁面上的一個DOM元素。
完成:
2、idea新建maven工程
pom.xml導(dǎo)入入selinium依靠
org.seleniumhq.selenium
selenium-java
3.141.59
代碼完成:
packagecom.blb;
importorg.jsoup.Jsoup;
importorg.jsoup.nodes.Document;
importorg.jsoup.select.Elements;
importorg.openqa.selenium.By;
importorg.openqa.selenium.WebDriver;
importorg.openqa.selenium.chrome.ChromeDriver;
publicclasschrome{undefined
publicstaticvoidmain(String[]args){undefined
//下載的chromedriver位置
System.setProperty(“webdriver.chrome.driver”,”D:\\idea_workspace\\Jsoup\\src\\main\\chromedriver.exe”);
//實例化ChromeDriver目標
WebDriverdriver=newChromeDriver();
Stringurl=”https://search.51job.com/list/000000,000000,0000,00,9,99,%25E5%25A4%25A7%25E6%2595%25B0%25E6%258D%25AE%25E5%25B7%25A5%25E7%25A8%258B%25E5%25B8%2588,2,1.html?lang=c&stype=&postchannel=0000&workyear=99&cotype=99°reefrom=99&jobterm=99&companysize=99&providesalary=99&lonlat=0%2C0&radius=-1&ord_field=0&confirmdate=9&fromType=&dibiaoid=0&address=&line=&specialarea=00&from=&welfare=”;
//翻開指定網(wǎng)站
driver.get(url);
//解析頁面
StringpageSource=driver.getPageSource();
Documentjsoup=Jsoup.parse(pageSource);
//界說選擇器規(guī)則
Stringrule=”#resultList>div:nth-child(4)>p>span>a”;
//經(jīng)過選擇器拿到元素
Elementsselect=jsoup.select(rule);
Strings=select.text();
System.out.println(s);
//模仿瀏覽器點擊
driver.findElement(By.cssSelector(rule)).click();
}
}
爬取電影資源:
packagecom.blb;
importorg.jsoup.Jsoup;
importorg.jsoup.nodes.Document;
importorg.jsoup.nodes.Element;
importorg.jsoup.select.Elements;
importorg.openqa.selenium.WebDriver;
importorg.openqa.selenium.chrome.ChromeDriver;
publicclassgetMovie{undefined
privatestaticfinalStringurl=”http://www.zuidazy5.com”;
publicstaticvoidmain(String[]args){undefined
System.setProperty(“webdriver.chrome.driver”,”D:\\idea_workspace\\Jsoup\\src\\main\\chromedriver.exe”);
WebDriverdriver=newChromeDriver();
driver.get(url);
StringpageSource=driver.getPageSource();
Documentjsoup=Jsoup.parse(pageSource);
Stringrule1=”body>div.xing_vb>ul>li>span.xing_vb4>a”;
Elementsselect=jsoup.select(rule1);
//遍歷當(dāng)前頁的所有電影概況進口
for(Elemente:select)
{undefined
//獲取電影概況頁鏈接
Stringhref=e.attr(“href”);
//進入每個電影概況頁面
driver.get(url+href);
StringpageSource2=driver.getPageSource();
Documentjsoup2=Jsoup.parse(pageSource2);
//界說獲取電影信息元素的規(guī)則
Stringmname=”body>div.warp>div:nth-child(1)>div>div>div.vodInfo>div.vodh>h2″;
Stringmpic=”body>div.warp>div:nth-child(1)>div>div>div.vodImg>img”;
Stringmdirector=”body>div.warp>div:nth-child(1)>div>div>div.vodInfo>div.vodinfobox>ul>li:nth-child(2)>span”;
Stringmactor=”body>div.warp>div:nth-child(1)>div>div>div.vodInfo>div.vodinfobox>ul>li:nth-child(3)>span”;
Stringmarea=”body>div.warp>div:nth-child(1)>div>div>div.vodInfo>div.vodinfobox>ul>li:nth-child(5)>span”;
Stringmlanguage=”body>div.warp>div:nth-child(1)>div>div>div.vodInfo>div.vodinfobox>ul>li:nth-child(6)>span”;
Stringmshowtime=”body>div.warp>div:nth-child(1)>div>div>div.vodInfo>div.vodinfobox>ul>li:nth-child(7)>span”;
Stringmscore=”body>div.warp>div:nth-child(1)>div>div>div.vodInfo>div.vodh>label”;
Stringmtimelength=”body>div.warp>div:nth-child(1)>div>div>div.vodInfo>div.vodinfobox>ul>li:nth-child(8)>span”;
Stringmlastmodifytime=”body>div.warp>div:nth-child(1)>div>div>div.vodInfo>div.vodinfobox>ul>li:nth-child(9)>span”;
Stringminfo=”body>div.warp>div:nth-child(1)>div>div>div.vodInfo>div.vodinfobox>ul>li.cont>div>span.more”;
Stringmplayaddress1=”#play_1>ul>li”;
Stringmplayaddress2=”#play_2>ul>li”;
Stringmsv=”body>div.warp>div:nth-child(1)>div>div>div.vodInfo>div.vodh>span”;
//獲取元素信息
Stringsv=jsoup2.select(msv).text();
Stringname=jsoup2.select(mname).text();
Stringpic=jsoup2.select(mpic).attr(“src”);
Stringdirector=jsoup2.select(mdirector).text();
Stringactor=jsoup2.select(mactor).text();
Stringarea=jsoup2.select(marea).text();
Stringlanguage=jsoup2.select(mlanguage).text();
Stringshowtime=jsoup2.select(mshowtime).text();
Stringscore=jsoup2.select(mscore).text();
Stringtimelength=jsoup2.select(mtimelength).text();
Stringlastmodifytime=jsoup2.select(mlastmodifytime).text();
Stringinfo=jsoup2.select(minfo).text();
Stringplayaddress1=jsoup2.select(mplayaddress1).text();
Stringplayaddress2=jsoup2.select(mplayaddress2).text();
//打印電影名
System.out.println(name);
}
}
}
為了不顯現(xiàn)瀏覽器爬取過程,能夠?qū)hromedriver.exe換成無頭瀏覽器phantomjs.exe
java和python在爬蟲方面的優(yōu)勢和下風(fēng)是什么?
Python
強壯的網(wǎng)絡(luò)功用,模仿登陸,解析Javascript,缺陷是網(wǎng)頁解析Python編寫程序非常便利,著名的Python爬蟲有scratch等
Java
Java有許多解析器,對網(wǎng)頁的解析支撐非常好,缺陷是有網(wǎng)絡(luò)上有許多Java開源爬蟲,比方nutch,中國有優(yōu)異的webmagicjava解析器,比方Htmlparser和jsoup,能夠滿意Java和python的通用需求。如果需求模仿登陸和反采集,挑選python更便利。如果需求處理雜亂的網(wǎng)頁,解析網(wǎng)頁內(nèi)容生成結(jié)構(gòu)化數(shù)據(jù)或精細解析網(wǎng)頁內(nèi)容,能夠挑選Java。
寫爬蟲用什么言語好?
爬蟲挑選什么東西?
1.Crawler是一個網(wǎng)絡(luò)蜘蛛機器人,它能自動地抓取數(shù)據(jù)并依據(jù)咱們的規(guī)矩獲取數(shù)據(jù)
2。為什么運用爬蟲?私人定制搜索引擎獲取更多數(shù)據(jù)的年代不再是互聯(lián)網(wǎng)年代,而是大數(shù)據(jù)年代
3。爬蟲的原理:操控節(jié)點(URL分配器)、爬蟲節(jié)點(依據(jù)算法抓取數(shù)據(jù)并存儲在數(shù)據(jù)庫中)、資源庫(存儲爬蟲數(shù)據(jù)庫供給搜索)。爬蟲的設(shè)計思維:爬蟲的網(wǎng)絡(luò)地址,通過HTTP協(xié)議得到相應(yīng)的HTML頁面
5。爬蟲言語挑選:
PHP:雖然被評為“世界上最好的言語”,但作為爬蟲的缺陷:沒有多線程的概念,對異步的支撐很少,并發(fā)性不足,爬蟲對功率的要求很高
C/CJava:python最大的競爭對手,它非常龐大和粗笨。爬蟲需求常常修改代碼
Python:言語優(yōu)美,代碼介紹,多方功用模塊,調(diào)用替代言語接口,以及成熟的分布式戰(zhàn)略
Java還能夠完結(jié)爬蟲,如jsoup包,一個非常便利的HTML解析東西??墒牵琂ava言語相對比較麻煩。
java合適做爬蟲嗎?
Java能夠做許多工作,但它是企業(yè)應(yīng)用程序服務(wù)端運用最廣泛的爬蟲程序。當(dāng)然,以前的公司crawler是由Java完結(jié)的
好的,那么這便是易供求網(wǎng)給大家共享的java合適爬蟲嗎java爬蟲與python爬蟲的差異,希望大家看完這篇由小編精心整理的內(nèi)容后,能對相關(guān)常識有所了解,處理你的疑問!
廣州天河區(qū)珠江新城富力盈力大廈北塔2706
020-38013166(網(wǎng)站咨詢專線)
400-001-5281 (售后服務(wù)熱線)
深圳市坂田十二橡樹莊園F1-7棟
Site/ http://www.szciya.com
E-mail/ itciya@vip.163.com
品牌服務(wù)專線:400-001-5281
長沙市天心區(qū)芙蓉中路三段398號新時空大廈5樓
聯(lián)系電話/ (+86 0731)88282200
品牌服務(wù)專線/ 400-966-8830
旗下運營網(wǎng)站:
Copyright ? 2016 廣州思洋文化傳播有限公司,保留所有權(quán)利。 粵ICP備09033321號