HttpClient抓取【需登入跳轉頁面】的資料
大家都知道HttpClient可以抓取頁面資料,但是有的頁面需要使用者登入後才可以訪問,第一次我用瀏覽器登入了,把瀏覽器的Cookie放了進去,可以抓取,但是一天後伺服器的Session就過期了,這樣很麻煩,後來在網上找了很多資料,才有了下面的版本,下面需要設定兩個URL,一個是登入頁的,主要是用來獲取登入後的Cookie,然後就可以請求第二次的URL了。程式碼很簡單應該大家都可以看懂,我就不解釋了。
package cn.amazon.http;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator ;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.CookieStore;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache .http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.impl.conn.PoolingClientConnectionManager;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
//對介面進行測試
public class getCookie {
private String loginUrl = "" ;
private String SearchUrl = "";
private String charset = "UTF-8";
public void test() {
//存放傳送引數
Map<String, String> createMap = new HashMap<String, String>();
createMap.put("userName", "");
createMap.put("password", "");
createMap.put("email", "[email protected]");
HttpPost httpPost = null;
HttpPost httpPost2 = null;
HttpResponse response = null;
DefaultHttpClient client = null;
String result = null;
try {
client = new DefaultHttpClient(new PoolingClientConnectionManager());
httpPost = new HttpPost(loginUrl);
// 設定請求頭
httpPost.setHeader("User-Agent",
"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0");
// 設定引數
List<NameValuePair> list = new ArrayList<NameValuePair>();
Iterator iterator = createMap.entrySet().iterator();
while (iterator.hasNext()) {
Entry<String, String> elem = (Entry<String, String>) iterator.next();
list.add(new BasicNameValuePair(elem.getKey(), elem.getValue()));
}
if (list.size() > 0) {
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(list, charset);
httpPost.setEntity(entity);
}
// 第一次請求
response = client.execute(httpPost);
System.out.println(response);
// 第二次請求
httpPost2 = new HttpPost(SearchUrl);
response = client.execute(httpPost2);
System.out.println(response);
// 登入後的請求內容
if (response != null) {
HttpEntity resEntity = response.getEntity();
if (resEntity != null) {
result = EntityUtils.toString(resEntity, charset);
}
}
// System.out.println(result);
} catch (Exception ex) {
ex.printStackTrace();
}
}
public static void main(String[] args) {
getCookie main = new getCookie();
main.test();
}
}
相關推薦
HttpClient抓取【需登入跳轉頁面】的資料
大家都知道HttpClient可以抓取頁面資料,但是有的頁面需要使用者登入後才可以訪問,第一次我用瀏覽器登入了,把瀏覽器的Cookie放了進去,可以抓取,但是一天後伺服器的Session就過期了,這樣很麻煩,後來在網上找了很多資料,才有了下面的版本,下面需要設定
【2017-05-21】WebForm跨頁面傳值取值、C#服務端跳轉頁面、 Button的OnClientClick屬性、Js中getAttribute和超鏈接點擊彈出警示框。
代碼 height delet update size 內存 客戶 bar win 一、跨頁面傳值和取值: 1、QueryString - url傳值,地址傳值 優缺點:不占用服務器內存;保密性差,傳遞長度有限。 通過跳轉頁面路徑進行傳值,方式: href="地址?ke
點擊存緩存並跳轉頁面並到跳轉頁面取緩存
get html == mage one mode console spl load 之前頁面的 html: <image bindtap=‘ontTapdetails‘ data-item_data=‘{{item}}‘ class=
通過分析Ajax請求抓取【今日頭條】“街拍”美圖
有一些網頁直接請求得到的HTML程式碼並沒有在網頁中看到的內容,因為一些資訊是通過Ajax載入,並通過js渲染生成的,這時就需要通過分析網頁的請求來獲取想要爬取的內容。本文通過抓取今日頭條街拍美圖講解一下具體操作步驟。 網路庫:Requests 解析庫:BeautifulSoup+正則表
vue 判斷是否登入,未登入跳轉到登入頁
網頁一進入判斷是否登入,未登入跳轉到登入頁面 router.js export default new Router({ routes: [ { path: '/', name: 'HelloWorld', component: HelloWorld,
點選存快取並跳轉頁面併到跳轉頁面取快取
之前頁面的 html: <image bindtap='ontTapdetails' data-item_data='{{
正則達式抓取所需資料
preg_match_all( [\x{4e00}-\x{9fa5}]*)/u', $str, $arr); 用此語句抓取文字中的中文字元時結果為亂碼, 原因是編碼問題引起, 在執行前需宣告編碼格式, header('content-type:text/html;charset=utf-8'),
Shiro攔截器,在登入時判斷是ajax請求返回json,普通請求跳轉頁面
在使用shiro時,會遇到普通的頁面請求以及api介面呼叫的請求,因此需要區別對待來判斷是跳轉登入頁面還是返回json的資料: 1.建立攔截器 package org.zyyd.base.filter; import com.alibaba.fastjson.JSONObject;
通過分析Ajax請求抓取【今日頭條】街拍美圖
有一些網頁直接請求得到的HTML程式碼並沒有在網頁中看到的內容,因為一些資訊是通過Ajax載入,並通過js渲染生成的,這時就需要通過分析網頁的請求來獲取想要爬取的內容。本文通過抓取今日頭條街拍美圖講解一下具體操作步驟。 網路庫:Requests 解析庫:Beau
scrapy網頁跳轉後進行資料爬取
因為一開始的網站爬取的是一個href,所以需要去跳轉一下,即發一個Request <a href="https://XXX.com.cn/w/2018-11-24/doc-ihpevhck4340972.html">你好</a> 以下是自己的程式碼:
python selenium的使用、檔案下載、登入跳轉問題和簡單封裝
這幾天折騰selenium,折騰的夠嗆,我們拿窮遊網來舉例吧,起因是因為要下載窮遊網所有的旅遊錦囊,它的檔案是PDF格式的,點選這個按鈕即可下載,但有個前提,它需要登入,於是就拿手機註冊了一個 起初為了方便,我是打算用phantomjs+selenium這
Python3.6+Django2.0.2 實現使用者登入+跳轉首頁--左側選單+新增使用者資訊--展示使用者資訊
一、環境要求:python版本:Python3.6.4web框架:Django2.0.2開發工具:Eclipse+Pydev資料庫:mysqlweb:html+css+JavaScript二、實現需求:1、使用者登入:使用者登入頁面,輸入使用者名稱、密碼(非加密),通過與資料
react登入跳轉問題整理
1.react-router-dom 整個前端路由的選擇在index.js頁面ReactDOM.render(( <HashRouter> <div> <Route exact path="/"com
vue-router 判斷是否登陸,未登入跳轉登陸頁面
移動app 只需驗證首頁是否登陸 meta: { title: 'index', requireAuth: true } main.js中 router.beforeEach((to, from, next) => { if (to.matched.some(m =&g
Jsoup HttpClient 抓取網路上的圖片
package com.th.spider.test; import java.io.BufferedOutputStream; import java.io.FileOutputStream; import org.apache.commons.logging.Log
一個漂亮的ExtJs登入視窗(實現登入跳轉)
這幾天有程式碼任務,自己做了個登入介面,感覺不錯,拿來共享一下~~ <link rel="stylesheet" href="/ext-3.2.1/resources/css/ext-all.css" type="text/css"></link>
小宗的啟示:不同型別的liferay使用者登入到不同頁面(登入跳轉個性化)——liferay5.0.1使用者登入後的跳轉(二)
在liferay5.0.1使用者登入後的跳轉(一) 中,提到新建使用者在去掉首次登入的條例說明,可以自動跳轉到portal.properties設定的固定頁面上。 問題又來了,在實際應用中,不同使用者需要登入到不同頁面進行。而liferay設定的登入跳轉是侷限的,使得不同使用
vue-router,利用router.beforeEach未登入跳轉到登入頁
vue-router提供了導航鉤子,我們使用全域性的鉤子,在進入頁面前判斷是否登入 全域性鉤子 你可以使用 router.beforeEach 註冊一個全域性的 before 鉤子: const router = new VueRouter({ ... }
mvc設計模式實現簡單登入跳轉
MVC模式 MVC最初應用於桌面程式中,M指資料模型,V指使用者介面,C指控制器,是Xerox PARC在20世紀80年代為程式語言“Smalltalk-80”發明的一種軟體設計模式,至今已被廣泛使用。基於JavaEE的Web應用開發,經歷了Model1和Model2的不同
python利用hook技術破解https,抓取使用者名稱與登入密碼!
相對於http協議,https是的特點就是他的安全性,http協議的通訊內容用普通的嗅探器可以捕捉到,但是https協議的內容嗅探到的是加密後的內容,對我們的利用價值不是很高,所以一些大的網站----涉及到“大米”的網站,採用的都是http是協議。