日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java 模拟登陆exe_Java简单模拟登陆和爬虫实例---博客园老牛大讲堂

發布時間:2025/3/21 java 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 模拟登陆exe_Java简单模拟登陆和爬虫实例---博客园老牛大讲堂 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

鑒于有人說講的不清楚,我這里再詳細補充一下:更新日期:2017-11-23

本片文章適合初學者,只簡單說了一下爬蟲怎么用,和一個簡單的小實例。不適合你的就可以不看了。----博客園老牛大講堂

1、什么是爬蟲?

個人解釋:網路爬蟲其實就是拷貝網頁源代碼。

例如:我寫了個網站:http://www.qe14053716.icoc.me/,你想獲取里面的數據咋辦?java的話肯定是把網站的源代碼全部拿過來,把想要的數據給分析出來就完事了!

百度爬蟲:百度是個搜索引擎,它的工作是什么呢?其實就是不斷的把你的源代碼拿過去,之后你的數據就泄漏了。

例如:我的博客園老牛大講堂,這篇文章百度會每隔一段時間爬取一下,這樣大家就能通過百度搜索到我的文章了。

例如:現在出了不僅僅是博客園,還有其他的:新浪,博客等,還有一下不知名的博客園之類的,因為他們沒有用戶,沒有人發文章咋辦?

所以就爬取別人的網站,來發表到自己的內容上。

防爬蟲:怎么防止爬蟲,像這種公開的博客園,無法防止爬蟲,因為博客園需要爬蟲來做推廣!所以我加了防偽標志-----博客園老牛大講堂,

不管這篇文章被爬蟲了多少遍,我的博客園老牛大講堂永遠都會在,你們可以查看我的原文章了!

常見的爬蟲技術:

現在網路上出了很多爬蟲技術:八爪魚、神箭手,這些都做的比較成熟了,好像是免費的。可以使用(我沒用過,不介紹了)

我介紹的是爬蟲常見的技術之一:jsoup爬蟲

2、jsoup爬蟲優缺點?---博客園老牛大講堂

缺點:1,抓網頁有點慢,2、抓靜態網頁比較好。如果里面涉及到一些動態的網頁,可能抓不出來。

缺點太多了,現在主流一般不用jsoup,因為現在動態網頁居多,jsoup爬取動態網頁效果太差。所以不用

如果使用,也一般jsoup技術和其他技術一塊來用,方便爬取網頁。

3、怎么爬蟲?---博客園老牛大講堂

例子:這里用了jsoup爬蟲。這里的用戶名,密碼因為涉及到其他的,所以你懂的。

這里的例子需要一個jar包:jsoup-1.8.1? 自己下。里面用的是jsoup爬蟲

1)爬取網頁----博客園老牛大講堂

不需要登陸就能獲取的網頁數據。

public classA {//返會一個網頁的所有代碼

public String getjsoup() {//返回一個網頁的所有代碼,get獲取內容的方式。

Document doc = Jsoup .connect("http://www.baidu.com") .timeout(1000).get();

returndoc.text();

}

public static void main(string[] args){

System.out.println(getjsoup());

}

}

2)模擬登陸----博客園老牛大講堂

需要登陸的網頁,獲取后面的內容

模擬登陸比較常見,例如:有用戶名和密碼想登陸爬取咋辦?

首先獲取網頁的cook是多少才行。

public classA {//返會一個網頁的所有代碼

public String getjsoup() {//返回一個網頁的所有代碼,get獲取內容的方式。

//得到session ,進行模擬登陸,(如果有驗證碼,我就不知道了)。--博客園老牛大講堂

Connection.Response res 得到=Jsoup.connect(

"http://*******************").data(

"userName", "2012000111033", "password", "123456789")//進行模擬登陸

.method(Connection.Method.POST).timeout(10000).execute();//設置請求時間和登陸用的用戶名,密碼。

Document doc =res.parse();

//根據session進行爬蟲--博客園老牛大講堂

//注釋:不是所有網站他們都需要cook,也不是所有的網站cook都是iPlanetDirectoryPro。每個網站cook都不一樣。

//想要知道網站的cook,自己百度吧!--太基礎,不介紹了

String sessionId = res.cookie("AAA");//不同網站網址的cookie不一樣。而且每次訪問都不一樣,所以不要想著把session保存起來。

String se = res.cookie("BBB");//cook怎么查看呢?看下面

System.out.println(sessionId);System.out.println(se);

Document objectDoc =Jsoup.connect(

"http://www.****.com").cookie(//里面的網址(就是你想要爬取的網頁)

"AAA", sessionId).cookie("BBB", se)

.timeout(10000).post();//設置請求的時間(這里設置的請求時間是10秒)

return objectDoc .text();

}

public static void main(string[] args){

System.out.println(getjsoup());

}

}

cook的查看:F12-》application——》cookies查看。----博客園老牛大講堂

3)假設你已經在控制臺輸出了自己想要的網頁,那么下面就看具體網頁的分析了

屬性太多,根據不同的網站,獲取方式也多種多樣,之后就能得到想要的數據了

例如:

Element htmlElement = objectDoc.getElementsByClass("table_kc").get(0);//得到class為table_kc的第一個對象

Elements trElements = htmlElement.getElementsByTag("tr");//得到tr標簽的所有對象Elements divElments = trElements.get(i) .getElementsByAttributeValue("align", "left");//得到第i個標簽的style為:align:left的元素,根據class進行得到對象。

4)我獲取的一個網頁數據(一個網頁下表格里面的數據)----博客園老牛大講堂

網頁數據不同,獲取方式也不同。

public classA {//返會一個list對象

public ListgetPersonInfo() {//返回一個list對象

List list = new ArrayList();try{

//得到session ,進行模擬登陸,(如果有驗證碼,我就不知道了)。--博客園老牛大講堂

Connection.Response res 得到=Jsoup.connect("http://**********").data("userName", "2012000111033", "password", "123456789")//進行模擬登陸

.method(Connection.Method.POST).timeout(10000).execute();//設置請求時間和登陸用的用戶名,密碼。

Document doc=res.parse();//根據session進行爬蟲--博客園老牛大講堂

//注釋:不是所有網站他們都需要cook,也不是所有的網站cook都是iPlanetDirectoryPro。每個網站cook都不一樣。

//想要知道網站的cook,自己百度吧!--太基礎,不介紹了

String sessionId = res.cookie("AAA");//不同網站網址的cookie不一樣。而且每次訪問都不一樣,所以不要想著把session保存起來。

String se= res.cookie("BBB");

Document objectDoc=Jsoup.connect("http://www.****.com").cookie(//里面的網址(就是你想要爬取的網頁)"AAA", sessionId).cookie("BBB", se)

.timeout(10000).post();//設置請求的時間(這里設置的請求時間是10秒)

Element htmlElement= objectDoc.getElementsByClass("table_kc").get(0);//得到class為table_kc的第一個對象

Elements trElements= htmlElement.getElementsByTag("tr");//得到tr標簽的對象

System.out.println(trElements.size());//輸出多少個tr標簽for (int i = 1; i < trElements.size(); i++) {

Elements divElments=trElements.get(i)

.getElementsByAttributeValue("align", "left");//根據class進行得到對象。for (int j = 0; j < trElements.size(); j++) {

Element d=divElments.get(j);//獲取每一個對象

list.add(d.text());//得到這個對象對應的值

}

}

}catch(IOException e) {

e.printStackTrace();

}returnlist;

}

}

總結

以上是生活随笔為你收集整理的java 模拟登陆exe_Java简单模拟登陆和爬虫实例---博客园老牛大讲堂的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。