欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用Post方法模擬登陸爬取網(wǎng)頁的實(shí)現(xiàn)方法

 更新時(shí)間:2017年03月27日 09:39:20   投稿:jingxian  
下面小編就為大家?guī)硪黄褂肞ost方法模擬登陸爬取網(wǎng)頁的實(shí)現(xiàn)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

最近弄爬蟲,遇到的一個(gè)問題就是如何使用post方法模擬登陸爬取網(wǎng)頁。

下面是極簡(jiǎn)版的代碼:

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;

import java.net.HttpURLConnection;
import java.net.URL;

import java.util.HashMap;

public class test {

 //post請(qǐng)求地址
 private static final String POST_URL = "";
 
 //模擬谷歌瀏覽器請(qǐng)求
 private static final String USER_AGENT = "";
 
 //用賬號(hào)登錄某網(wǎng)站后 請(qǐng)求POST_URL鏈接獲取cookie
 private static final String COOKIE = "";
 
 //用賬號(hào)登錄某網(wǎng)站后 請(qǐng)求POST_URL鏈接獲取數(shù)據(jù)包
 private static final String REQUEST_DATA = "";
 
 public static void main(String[] args) throws Exception {
  HashMap<String, String> map = postCapture(REQUEST_DATA);
  String responseCode = map.get("responseCode");
  String value = map.get("value");
  
  while(!responseCode.equals("200")){
   map = postCapture(REQUEST_DATA);
   responseCode = map.get("responseCode");
   value = map.get("value");
  }
  
  //打印爬取結(jié)果
  System.out.println(value);
 }
 
 private static HashMap<String, String> postCapture(String requestData) throws Exception{
  HashMap<String, String> map = new HashMap<>();
  
  URL url = new URL(POST_URL);
  HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
  httpConn.setDoInput(true); // 設(shè)置輸入流采用字節(jié)流
  httpConn.setDoOutput(true); // 設(shè)置輸出流采用字節(jié)流
  httpConn.setUseCaches(false); //設(shè)置緩存
  httpConn.setRequestMethod("POST");//POST請(qǐng)求
  httpConn.setRequestProperty("User-Agent", USER_AGENT);
  httpConn.setRequestProperty("Cookie", COOKIE);
  
  PrintWriter out = new PrintWriter(new OutputStreamWriter(httpConn.getOutputStream(), "UTF-8"));
  out.println(requestData);
  out.close();

  int responseCode = httpConn.getResponseCode();
  StringBuffer buffer = new StringBuffer();
  if (responseCode == 200) {
   BufferedReader reader = new BufferedReader(new InputStreamReader(httpConn.getInputStream(), "UTF-8"));
   String line = null;
   while ((line = reader.readLine()) != null) {
    buffer.append(line);
   }
   reader.close();
   httpConn.disconnect();
  }
  
  map.put("responseCode", new Integer(responseCode).toString());
  map.put("value", buffer.toString());
  return map;
 }

}

以上這篇使用Post方法模擬登陸爬取網(wǎng)頁的實(shí)現(xiàn)方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • java實(shí)現(xiàn)fibonacci數(shù)列學(xué)習(xí)示例分享(斐波那契數(shù)列)

    java實(shí)現(xiàn)fibonacci數(shù)列學(xué)習(xí)示例分享(斐波那契數(shù)列)

    這篇文章主要介紹了fibonacci數(shù)列(斐波那契數(shù)列)示例,大家參考使用吧
    2014-01-01
  • Java基礎(chǔ)教程之實(shí)現(xiàn)接口

    Java基礎(chǔ)教程之實(shí)現(xiàn)接口

    這篇文章主要介紹了Java基礎(chǔ)教程之實(shí)現(xiàn)接口,也可以說是實(shí)施接口,因?yàn)榻涌谥皇嵌x,最終要實(shí)現(xiàn)它,本文就專門講解接口的實(shí)現(xiàn),需要的朋友可以參考下
    2014-08-08
  • 修改idea運(yùn)行內(nèi)存大小的方法總結(jié)

    修改idea運(yùn)行內(nèi)存大小的方法總結(jié)

    在開發(fā)過程中,總會(huì)遇到idea運(yùn)行內(nèi)存不足,所以本文小編給大家介紹了修改idea運(yùn)行內(nèi)存大小的兩種方法,文中通過圖文給大家講解的非常詳細(xì),需要的朋友可以參考下
    2023-12-12
  • Java并發(fā)系列之CountDownLatch源碼分析

    Java并發(fā)系列之CountDownLatch源碼分析

    這篇文章主要為大家詳細(xì)介紹了Java并發(fā)系列之CountDownLatch源碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • Java基礎(chǔ)類學(xué)習(xí)之String詳解

    Java基礎(chǔ)類學(xué)習(xí)之String詳解

    這篇文章主要為大家詳細(xì)介紹了Java基礎(chǔ)類中String的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Java有一定的幫助,需要的可以參考一下
    2022-12-12
  • 詳解使用MyBatis Generator自動(dòng)創(chuàng)建代碼

    詳解使用MyBatis Generator自動(dòng)創(chuàng)建代碼

    這篇文章主要介紹了使用MyBatis Generator自動(dòng)創(chuàng)建代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-12-12
  • Java網(wǎng)絡(luò)編程實(shí)現(xiàn)多線程聊天

    Java網(wǎng)絡(luò)編程實(shí)現(xiàn)多線程聊天

    這篇文章主要為大家詳細(xì)介紹了Java網(wǎng)絡(luò)編程實(shí)現(xiàn)多線程聊天,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • java實(shí)現(xiàn)二維碼生成功能詳細(xì)示例

    java實(shí)現(xiàn)二維碼生成功能詳細(xì)示例

    這篇文章主要給大家介紹了關(guān)于java實(shí)現(xiàn)二維碼生成功能的相關(guān)資料,隨著信息化時(shí)代的到來,二維碼作為一種信息傳遞的工具,越來越受到人們的歡迎,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-07-07
  • Java必備知識(shí)之位運(yùn)算及常見進(jìn)制解讀

    Java必備知識(shí)之位運(yùn)算及常見進(jìn)制解讀

    從現(xiàn)代計(jì)算機(jī)中所有的數(shù)據(jù)二進(jìn)制的形式存儲(chǔ)在設(shè)備中。即 0、1 兩種狀態(tài),計(jì)算機(jī)對(duì)二進(jìn)制數(shù)據(jù)進(jìn)行的運(yùn)算(+、-、*、/)都是叫位運(yùn)算,即將符號(hào)位共同參與運(yùn)算的運(yùn)算
    2021-10-10
  • Java中HashMap和Hashtable的區(qū)別小結(jié)

    Java中HashMap和Hashtable的區(qū)別小結(jié)

    本文主要介紹了Java中HashMap和Hashtable的區(qū)別小結(jié),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07

最新評(píng)論