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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Jsoup 抓取和数据页 认识HTTP头

發布時間:2023/11/29 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Jsoup 抓取和数据页 认识HTTP头 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

推薦一本書:黑客攻防技術寶典.Web實戰篇? ;

? ? ??順便留下一個疑問:能否通過jsoup大量并發訪問web或者小型域名server,使其癱瘓?其有用jsoup熟悉的朋友能夠用它解析url來干一件非常無恥的事(源代碼保密)。呵呵。接下來簡單的介紹下JSOUP。

? ? ? jsoup 是一款基于Java 的HTML解析器。可直接解析某個URL地址、HTML文本字符串、HTML文件。它提供了一套很省力的API。可通過DOM,CSS以及類似于jQuery的操作方法來取出和操作數據。

? ? ?官網下載地址:http://jsoup.org/download,下載core library。導入項目

? ???1:解析HTML文本字符串

[java]?view plaincopy
  • ??/**?
  • *?解析一個html文檔。

    String類型

    ?
  • */??
  • ublic?static?void?parseStringHtml(String?html)?{??
  • Document?doc?=?Jsoup.parse(html);//把String轉化成document格式???????
  • Elements?e=doc.body().getAllElements();//獲取所以body下的節點集??
  • Elements?e1=doc.select("head");//獲取head?節點集??
  • Element?e2=doc.getElementById("p");//獲取html上id=“p”的節點??
  • System.out.println(e1);??
  • ? ??2:解析url。

    這部分是重點

    有部分網址不一定都能直接獲取連接。for example ?:CSDN這樣的域名站點。這樣的一定要設置消息頭代理。? ? 否則報錯:像HTTP error fetching URL. Status=403。

    等http狀態異常

    。詳細HTTP狀態返回碼可參照最后部分,或者推薦的那本書

    [java]?view plaincopy
  • ????/**?
  • ?????*?通過請求地址獲取html?
  • ?????*/??
  • ????public?static?void?parseRequestUrl(String?url)?throws?IOException{??
  • ????????Connection?con?=?Jsoup.connect(url);//獲取請求連接??
  • //??????//瀏覽器可接受的MIME類型。

    ??
  • //??????con.header("Accept",?"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");??
  • //??????con.header("Accept-Encoding",?"gzip,?deflate");??
  • //??????con.header("Accept-Language",?"zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3");??
  • //??????con.header("Connection",?"keep-alive");??
  • //??????con.header("Host",?url);??
  • //??????con.header("User-Agent",?"Mozilla/5.0?(Windows?NT?6.1;?WOW64;?rv:26.0)?Gecko/20100101?Firefox/26.0");??
  • ????????Document?doc=con.get();??
  • ????????Elements?hrefs=doc.select("a[href=/kff517]");??//節點后面屬性?不須要??
  • ????????Elements?test=doc.select("html?body?div#container?div#body?div#main?div.main?div#article_details.details?div.article_manage?span.link_view");??
  • ????????System.out.println(hrefs);??
  • ????????System.out.println(test.text());//==.html獲取節點中的文本,類似于js中的方法??
  • ????}??

  • ? ? 3解析一個本地html文件。這個大同小異,改變下DOCUMENT的獲取方式。


    整理了一些關于HTTP 消息頭資料:

    GET /simple.htm HTTP/1.1<CR> ?---請求方式。請求對象。請求http協議
    Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*<CR> ? ? ?--指瀏覽器能接收的Content-type
    Accept-Language: zh-cn<CR> ? ---接收語言
    Accept-Encoding: gzip, deflate<CR> ? --接收編碼
    User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)<CR> ? ?本機的相關系信息。包含瀏覽器類型、操作系統信息等,非常多站點能夠顯示出你所使用的瀏覽器和操作系統版本號,就是由于能夠從這里獲取到這些信息。
    Host: localhost:8080<CR> 主機和port,在互聯網上一般指域名
    Connection: Keep-Alive<CR> 是否須要持久連接
    <CR>

    server發回的完整HTTP消息例如以下:
    HTTP/1.1 200 OK<CR> ? ?---HTTP/1.1 表示表示所用的協議。200OK 指server返回的狀態碼。正常返回
    Server: Microsoft-IIS/5.1<CR> ??
    X-Powered-By: ASP.NET<CR>
    Date: Fri, 03 Mar 2006 06:34:03 GMT<CR> ??
    Content-Type: text/html<CR>
    Accept-Ranges: bytes<CR>
    Last-Modified: Fri, 03 Mar 2006 06:33:18 GMT<CR>
    ETag: "5ca4f75b8c3ec61:9ee"<CR>
    Content-Length: 37<CR>
    <CR>
    <html><body>hello world</body></html>

    注意:<CR>是我加上去代表換行的。能夠刪掉,沒有意義

    HTTP請求頭概述?
       HTTP客戶程序(比如瀏覽器。向server發送請求的時候必須指明請求類型(通常是GET或者POST。如必要。客戶程序還能夠擇發送其它的請求頭。

    大多數請求頭并非必需的,但Content- Length除外。對于POST請求來說Content-Length必須出現。

    ?
     以下是一些最常見的請求頭?

    ? ?  Accept:瀏覽器可接受的MIME類型。 表示我們所用的瀏覽器能接受的Content-type
       Accept-Charset:瀏覽器可接受的字符集。?
       Accept-Encoding:瀏覽器可以進行解碼的數據編碼方式。比方gzip。Servlet可以向支持gzip的瀏覽器返回經gzip編碼的HTML頁面。

    很多情形下這可以降低5到10倍的下載時間。?
       Accept-Language:瀏覽器所希望的語言種類,當server可以提供一種以上的語言版本號時要用到。

    ?
       Authorization:授權信息,通常出如今對server發送的WWW-Authenticate頭的應答中。?
       Connection:表示是否須要持久連接。假設Servlet看到這里的值為"Keep-Alive",或者看到請求使用的是HTTP 1.1 (HTTP 1.1默認進行持久連接。它就能夠利用持久連接的長處,當頁面包括多個元素時(比如Applet,圖片,顯著地降低下載所須要的時間。要實現這一點,Servlet須要在應答中發送一個Content-Length頭。最簡單的實現方法是:先把內容寫入 ByteArrayOutputStream。然后在正式寫出內容之前計算它的大小。

    ?
       Content-Length:表示請求消息正文的長度。

    ?
       Cookie:這是最重要的請求頭信息之中的一個
       From:請求發送者的email地址,由一些特殊的Web客戶程序使用,瀏覽器不會用到它。?
       Host:初始URL中的主機和port。

    ?
       If-Modified-Since:僅僅當所請求的內容在指定的日期之后又經過改動才返回它。否則返回304"Not Modified"應答。?
       Pragma:指定"no-cache"值表示server必須返回一個刷新后的文檔,即使它是代理server并且已經有了頁面的本地拷貝。?
       Referer:包括一個URL,用戶從該URL代表的頁面出發訪問當前請求的頁面。?
    ?    User-Agent:瀏覽器類型,假設Servlet返回的內容與瀏覽器類型關則該值很常使用。?
       UA-Pixels,UA-Color。UA-OS,UA-CPU:由某些版本號的IE瀏覽器所發送的非標準的請求頭,表顯示屏尺寸、顏色深度、操作系統和CPU種類。

    ?

    版權聲明:本文博客原創文章,博客,未經同意,不得轉載。

    總結

    以上是生活随笔為你收集整理的Jsoup 抓取和数据页 认识HTTP头的全部內容,希望文章能夠幫你解決所遇到的問題。

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