首页 web前端 html教程 Jsoup 爬取页面的数据和 理解HTTP消息头_html/css_WEB-ITnose

Jsoup 爬取页面的数据和 理解HTTP消息头_html/css_WEB-ITnose

Jun 24, 2016 am 11:55 AM

推荐一本书:黑客攻防技术宝典.Web实战篇  ;

      顺便留下一个疑问:是否能通过jsoup大量并发访问web或者小型域名服务器,使其瘫痪?其实用jsoup熟悉的朋友可以用它解析url来干一件很无耻的事(源码保密)。呵呵,接下来简单的介绍下JSOUP。

      jsoup 是一款基于Java 的HTML解析器,可直接解析某个URL地址、HTML文本字符串、HTML文件。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。

     官网下载地址:http://jsoup.org/download,下载core library。导入项目

     1:解析HTML文本字符串

[java]  view plain copy

  1.   /** 
  2. * 解析一个html文档。String类型 
  3. */  
  4. ublic static void parseStringHtml(String html) {  
  5. Document doc = Jsoup.parse(html);//把String转化成document格式       
  6. Elements e=doc.body().getAllElements();//获取所以body下的节点集  
  7. Elements e1=doc.select("head");//获取head 节点集  
  8. Element e2=doc.getElementById("p");//获取html上id=“p”的节点  
  9. System.out.println(e1);  
     2:解析url。这部分是重点 , 有部分网址不一定都能直接获取连接。for example  :CSDN这种域名网站。这种一定要设置消息头代理。    否则报错:像HTTP error fetching URL. Status=403。等http状态异常 。具体HTTP状态返回码可参照最后部分,或者推荐的那本书

[java]  view plain copy

  1.     /** 
  2.      * 通过请求地址获取html 
  3.      */  
  4.     public static void parseRequestUrl(String url) throws IOException{  
  5.         Connection con = Jsoup.connect(url);//获取请求连接  
  6. //      //浏览器可接受的MIME类型。  
  7. //      con.header("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");  
  8. //      con.header("Accept-Encoding", "gzip, deflate");  
  9. //      con.header("Accept-Language", "zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3");  
  10. //      con.header("Connection", "keep-alive");  
  11. //      con.header("Host", url);  
  12. //      con.header("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0");  
  13.         Document doc=con.get();  
  14.         Elements hrefs=doc.select("a[href=/kff517]");  //节点后面属性 不需要  
  15.         Elements test=doc.select("html body div#container div#body div#main div.main div#article_details.details div.article_manage span.link_view");  
  16.         System.out.println(hrefs);  
  17.         System.out.println(test.text());//==.html获取节点中的文本,类似于js中的方法  
  18.     }  

    3 :解析一个本地html文件。这个大同小异,改变下DOCUMENT的获取方式。


整理了一些关于HTTP 消息头资料:

GET /simple.htm HTTP/1.1  ---请求方式,请求对象,请求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, */*      --指浏览器能接收的Content-type
Accept-Language: zh-cn   ---接收语言
Accept-Encoding: gzip, deflate   --接收编码
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)    本机的相关系信息,包括浏览器类型、操作系统信息等,很多网站可以显示出你所使用的浏览器和操作系统版本,就是因为可以从这里获取到这些信息。
Host: localhost:8080 主机和端口,在互联网上一般指域名
Connection: Keep-Alive 是否需要持久连接


服务器发回的完整HTTP消息如下:
HTTP/1.1 200 OK    ---HTTP/1.1 表示表示所用的协议。200OK 指服务器返回的状态码,正常返回
Server: Microsoft-IIS/5.1   
X-Powered-By: ASP.NET
Date: Fri, 03 Mar 2006 06:34:03 GMT   
Content-Type: text/html
Accept-Ranges: bytes
Last-Modified: Fri, 03 Mar 2006 06:33:18 GMT
ETag: "5ca4f75b8c3ec61:9ee"
Content-Length: 37

hello world

注意:是我加上去代表换行的,可以删掉,没有意义

HTTP请求头概述 
   HTTP客户程序(例如浏览器,向服务器发送请求的时候必须指明请求类型(一般是GET或者POST。如必要,客户程序还可以择发送其他的请求头。大多数请求头并不是必需的,但Content- Length除外。对于POST请求来说Content-Length必须出现。 
 下面是一些最常见的请求头 

     Accept:浏览器可接受的MIME类型。 表示我们所用的浏览器能接受的Content-type
   Accept-Charset:浏览器可接受的字符集。 
   Accept-Encoding:浏览器能够进行解码的数据编码方式,比如gzip。Servlet能够向支持gzip的浏览器返回经gzip编码的HTML页面。许多情形下这可以减少5到10倍的下载时间。 
   Accept-Language:浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时要用到。 
   Authorization:授权信息,通常出现在对服务器发送的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中的主机和端口。 
   If-Modified-Since:只当所请求的内容在指定的日期之后又经过修改才返回它,否则返回304"Not Modified"应答。 
   Pragma:指定"no-cache"值表示服务器必须返回一个刷新后的文档,即使它是代理服务器而且已经有了页面的本地拷贝。 
   Referer:包含一个URL,用户从该URL代表的页面出发访问当前请求的页面。 
     User-Agent:浏览器类型,如果Servlet返回的内容与浏览器类型关则该值非常用。 
   UA-Pixels,UA-Color,UA-OS,UA-CPU:由某些版本的IE浏览器所发送的非标准的请求头,表示屏幕大小、颜色深度、操作系统和CPU类型。 

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

> gt;的目的是什么 元素? > gt;的目的是什么 元素? Mar 21, 2025 pm 12:34 PM

本文讨论了HTML< Progress>元素,其目的,样式和与< meter>元素。主要重点是使用< progress>为了完成任务和LT;仪表>对于stati

< datalist>的目的是什么。 元素? < datalist>的目的是什么。 元素? Mar 21, 2025 pm 12:33 PM

本文讨论了html< datalist>元素,通过提供自动完整建议,改善用户体验并减少错误来增强表格。Character计数:159

< meter>的目的是什么。 元素? < meter>的目的是什么。 元素? Mar 21, 2025 pm 12:35 PM

本文讨论了HTML< meter>元素,用于在一个范围内显示标量或分数值及其在Web开发中的常见应用。它区分了< meter>从< progress>和前

HTML5中跨浏览器兼容性的最佳实践是什么? HTML5中跨浏览器兼容性的最佳实践是什么? Mar 17, 2025 pm 12:20 PM

文章讨论了确保HTML5跨浏览器兼容性的最佳实践,重点是特征检测,进行性增强和测试方法。

如何使用HTML5表单验证属性来验证用户输入? 如何使用HTML5表单验证属性来验证用户输入? Mar 17, 2025 pm 12:27 PM

本文讨论了使用HTML5表单验证属性,例如必需的,图案,最小,最大和长度限制,以直接在浏览器中验证用户输入。

视口元标签是什么?为什么对响应式设计很重要? 视口元标签是什么?为什么对响应式设计很重要? Mar 20, 2025 pm 05:56 PM

本文讨论了视口元标签,这对于移动设备上的响应式Web设计至关重要。它解释了如何正确使用确保最佳的内容缩放和用户交互,而滥用可能会导致设计和可访问性问题。

< iframe>的目的是什么。 标签?使用时的安全考虑是什么? < iframe>的目的是什么。 标签?使用时的安全考虑是什么? Mar 20, 2025 pm 06:05 PM

本文讨论了< iframe>将外部内容嵌入网页,其常见用途,安全风险以及诸如对象标签和API等替代方案的目的。

Gitee Pages静态网站部署失败:单个文件404错误如何排查和解决? Gitee Pages静态网站部署失败:单个文件404错误如何排查和解决? Apr 04, 2025 pm 11:54 PM

GiteePages静态网站部署失败:404错误排查与解决在使用Gitee...

See all articles