大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 常見問題 做Java爬蟲,有些感悟心得,分享給大家

做Java爬蟲,有些感悟心得,分享給大家

更新時間:2019-09-29 13:42:56 來源:動力節(jié)點 瀏覽3649次

首先,看完這篇文章,不能保證你成為大神,但是卻可以讓你懂得什么是爬蟲,如何使用爬蟲,如何利用http協(xié)議,侵入別人的系統(tǒng),當(dāng)然只是一些簡單的教程,拿到一些簡單的數(shù)據(jù)。

timg (12).jpg

先上代碼,在一步一步講解:

這是一個工具類,不用詳細(xì)看,網(wǎng)上哪里都能找到發(fā)送http請求的工具類,少包自己導(dǎo)  

packagecom.df.util;
importjava.io.BufferedReader;
importjava.io.IOException;
importjava.io.InputStreamReader;
importjava.io.OutputStreamWriter;
importjava.io.PrintWriter;
importjava.net.HttpURLConnection;
importjava.net.URL;
importjava.net.URLConnection;
importjava.util.List;
importjava.util.Map;
importorg.apache.log4j.Logger;
importorg.jsoup.Connection;
importorg.jsoup.Connection.Method;
importorg.jsoup.Connection.Response;
importorg.jsoup.Jsoup;
importcom.df.controller.DFContorller;

publicclassHttpPosts{
  privatefinalstaticLoggerlogger=Logger.getLogger(DFContorller.class);
  publicstaticStringsendPost(Stringurl,Stringparam){
  PrintWriterout=null;
  BufferedReaderin=null;
  Stringresult="";
  try{
  URLrealUrl=newURL(url);
  //打開和URL之間的連接
  URLConnectionconn=realUrl.openConnection();
  //設(shè)置通用的請求屬性
  conn.setRequestProperty("accept","*/*");
 conn.setRequestProperty("connection","Keep-Alive");
  conn.setRequestProperty("user-agent",
  "Mozilla/4.0(compatible;MSIE6.0;WindowsNT5.1;SV1)");
  //發(fā)送POST請求必須設(shè)置如下兩行
  conn.setDoOutput(true);
  conn.setDoInput(true);
  //獲取URLConnection對象對應(yīng)的輸出流
  out=newPrintWriter(conn.getOutputStream());
  //發(fā)送請求參數(shù)
  out.print(param);
  //flush輸出流的緩沖
  out.flush();
  //定義BufferedReader輸入流來讀取URL的響應(yīng)
  in=newBufferedReader(
  newInputStreamReader(conn.getInputStream(),"utf-8"));
  Stringline;
  while((line=in.readLine())!=null){
  result+=line;
  }
  }catch(Exceptione){
  logger.info("發(fā)送POST請求出現(xiàn)異常!"+e);
  e.printStackTrace();
  }
  //使用finally塊來關(guān)閉輸出流、輸入流
  finally{
  try{
  if(out!=null){
  out.close();
  }
  if(in!=null){
  in.close();
  }
  }
  catch(IOExceptionex){
  ex.printStackTrace();
  }
  }
  returnresult;
  }
  publicstaticStringsendGet(Stringurl,Stringparam){
  Stringresult="";
  BufferedReaderin=null;
  try{
  StringurlNameString=url+"?"+param;
  URLrealUrl=newURL(urlNameString);
  //打開和URL之間的連接
  URLConnectionconnection=realUrl.openConnection();
  //設(shè)置通用的請求屬性
  connection.setRequestProperty("accept","*/*");
  connection.setRequestProperty("connection","Keep-Alive");
  connection.setRequestProperty("user-agent",
  "Mozilla/4.0(compatible;MSIE6.0;WindowsNT5.1;SV1)");
  connection.setRequestProperty("Cookie","PHPSESSID=27roc4d0ccd2cg4jbht80k8km2");
  //建立實際的連接
  connection.connect();
  //獲取所有響應(yīng)頭字段
  Map<String,List<String>>map=connection.getHeaderFields();
  //遍歷所有的響應(yīng)頭字段
  for(Stringkey:map.keySet()){
  System.out.println(key+"--->"+map.get(key));
  }
  //定義BufferedReader輸入流來讀取URL的響應(yīng)
  in=newBufferedReader(newInputStreamReader(
  connection.getInputStream(),"utf-8"));
  Stringline;
  while((line=in.readLine())!=null){
  result+=line;
  }
  }catch(Exceptione){
  System.out.println("發(fā)送GET請求出現(xiàn)異常!"+e);
  e.printStackTrace();
  }
  //使用finally塊來關(guān)閉輸入流
  finally{
  try{
  if(in!=null){
  in.close();
  }
  }catch(Exceptione2){
  e2.printStackTrace();
  }
  }
  returnresult;
  }
  }

---------------------------------------分割線

下面進入主題:首先你要先進入,你要去爬取網(wǎng)站的登錄頁面,查看頁面源碼,找到登錄請求發(fā)送的方法名;一般來所,小型網(wǎng)站會直接寫在from表面action里面,很容易找得到,中型的網(wǎng)站就不會寫的這么直接了,找起來要費些功夫,可能在js里面,也可能不在這個頁面,推薦使用抓包工具登陸一次,看抓到的請求信息,大型的網(wǎng)站,本人爬取過的京東商城后臺,用游覽器自帶的f12,抓不到登錄的信息,一閃即逝,最后想了很多招才搞到京東的登錄接口;實現(xiàn)爬去;拿到了登錄接口地址后。上代碼

Stringdata=HttpPosts.sendGet(登錄地址(不帶參數(shù);String類型地址),參數(shù)(如:user_id=6853&export=112));(返回的登錄狀態(tài),一般是json格式,他會高數(shù)你是否登錄成功,有的是true,有的是1,視情況而定)選擇get還是post,模仿登錄頁面的請求

然后再來一個請求獲取cookie 

Connectionconn=Jsoup.connect("登錄后頁面的地址");
conn.method(Method.GET);
conn.followRedirects(false);
Responseresponse=conn.execute();
System.out.println(response.cookies());

再講cookie動態(tài)傳入get或者post方法里面替換到寫死的cookie;因為是測試所以寫死了cookie,可以寫成動態(tài)的;

之后再掉你要訪問登錄之后的頁面,主頁,或者是數(shù)據(jù)頁面,里面一定要攜帶cookie,和http請求的基本參數(shù)信息,不然一定會被攔截的。

Stringdata=HttpPosts.sendGet(登錄地址(不帶參數(shù);String類型地址),參數(shù)(如:user_id=6853&export=112));訪問方法同上;這回給你返回的就是他們的頁面了,如何你找到了對面的某個數(shù)據(jù)接口,那就可以直接訪問他,返回的就直接是數(shù)據(jù),不然你還要解析,他的頁面,很麻煩的。解析頁面一般用jsoup。

其實這個等于另類的入侵,不需要知道對方的接口文檔,用程序利用http協(xié)議直接訪問對方的服務(wù)器,

拿到你想要的東西。當(dāng)然有驗證碼的情況下,是很難的。這是爬蟲基礎(chǔ)。只是一帶而過,講的有些片面,不到之處多多海涵。

以上就是動力節(jié)點java培訓(xùn)機構(gòu)小編介紹的“做Java爬蟲,有些感悟心得,分享給大家”的內(nèi)容,希望對大家有幫助,更多java最新資訊請繼續(xù)關(guān)注動力節(jié)點java培訓(xùn)機構(gòu)官網(wǎng),每天會有精彩內(nèi)容分享與你。

提交申請后,顧問老師會電話與您溝通安排學(xué)習(xí)

免費課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 免费福利视频网 | 日本爱爱片 | 久久综合久久美利坚合众国 | 日本精品夜色视频一区二区 | 国产欧美另类久久久精品免费 | 国产在线小视频 | 精品国免费一区二区三区 | 日韩欧美网站 | 久久精品国产99久久香蕉 | 国产原创中文字幕 | 国产第一页视频 | 伊人精品网| 另类综合视频 | 久久久久久夜精品精品免费 | 亚州免费一级毛片 | jizz成熟丰满中国妇女 | 久久精品av77777 | 免费观看h片 | 久久国产精品ww | 欧美19p | 久久精品99久久香蕉国产色戒 | 欧美日韩国产亚洲一区二区三区 | 国产在线麻豆精品 | 国产日韩欧美在线观看不卡 | 看免费一级毛片 | 日本在线观看a | 婷婷自拍 | 欧美肥老妇做爰视频 | 国产亚洲精品看片在线观看 | 国产ar高清视频+视频 | 国产精品亚洲精品爽爽 | 亚洲青草视频 | 久久精品看片 | 国产一二三区在线 | 久久精品国产亚洲麻豆小说 | 日韩一区在线视频 | 激情影院在线 | 日本不卡免费高清一级视频 | 不卡影院| 欧美在线国产 | 欧洲精品在线观看 |