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
  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 plaincopy
  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<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种类。

 

版权声明:本文博客原创文章,博客,未经同意,不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/399954.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

杭电划分问题

在做杭电做题时遇到好几个有关划分的题目&#xff0c;比如2050 折线分割平面、1290的献给母校的蛋糕&#xff0c;都是数学问题吧&#xff0c;感觉挺有做数学题的感觉的&#xff0c;在这里总结一下。 1、n个点最多把直线分成1n份&#xff0c;这个很好理解 2、n条直线最多把平面分…

flask + 蓝图 用 sqlalchemy 对 mysql 进行 增删查改 的 demo

main.py import uuid # UUID: 通用唯一标识符 # from flask import Flask from flask import Flask, request, json, Response from flask_sqlalchemy import SQLAlchemyfrom app.main.views import * from app.app01.views import * from app.app02.views import * from a…

UVA - 400 Unix ls

/*收获&#xff1a;1. 我觉得最大的收获是&#xff0c;了解了该怎么进行竖向的数据输出并且&#xff0c;以及《入门经典》的做法&#xff0c;并没有先转换为二维数组再输出&#xff0c;而是用了些别的技巧(好像也能算是技巧&#xff0c;具体的看代码吧&#xff0c;这个我也不太…

javascript中String的fromCharCode()方法

前几天遇到一个bug,后端的模板引擎在输出形如: <div title"111 aaa">内容</div> 这样的内容时,无法输出 空格,所以只能用 来代替: <div title"111 aaa">内容</div> 然后前端使用空格来切分title值: var arr1 title.split( ); 然后…

Zend Server更新至6.2版本——虚拟主机全方位管理

Zend Server自从发布6.0以来&#xff0c;并支持云服务&#xff0c;成为很多PHP程序所选择的Web服务器。 Zend Server 6.2版本从更新内容来看&#xff0c;解决了Web服务器与虚拟主机之间的协同管理。并在细节上&#xff0c;更注重性能控制。 具体更新如下&#xff1a; 虚拟主机管…

Flask 蓝图,数据库链接

蓝图 使用场景 如果代码非常多&#xff0c;要进行归类。不同的功能放在不同的文件&#xff0c;把相关的视图函数也放进去。 蓝图也就是对flask的目录结构进行分配&#xff08;应用于小&#xff0c;中型的程序&#xff09; 当然对于大型项目也可以通过 url_prefix 加前缀的…

python基础-02

常见的数据类型 列表 在python中&#xff0c;列表的创建可以是由[]两个方括号组成的。在其他语言中&#xff0c;被称之为数组。 列表里可以存放一组值&#xff0c;并且系统默认的给列表里的每一个元素以索引值&#xff0c;方便查找和使用。 如下&#xff1a; #创建一个列表&…

Flask扩展系列(八)–用户会话管理

安装和启用 遵循标准的Flask扩展安装和启用方式&#xff0c;先通过pip来安装扩展&#xff1a; $ pip install Flask-Login 接下来创建扩展对象实例&#xff1a; 1 2 3 4 5 from flask import Flask from flask.ext.login import LoginManager app Flask(__name__) login…

onmousemove和onmouseout事件的调用,和js使用双引号、单引号的时候应该注意的问题...

使用js的时候&#xff0c;统一使用双引号&#xff0c;然后通过反斜杠进行转义 ①如果同时使用单引号、和双引号的情况下容易出现问题&#xff0c;导致标签中表示的事件不能调用&#xff0c; ②导致由于标签没有封口而出现样式布局错误 1 <!DOCTYPE html>2 <html>3 …

C++ 学习书目

C书单 第一篇 一些同学问我&#xff0c;如何学好C&#xff0c;我没有别的办法给你们&#xff0c;唯一的办法就是读书&#xff0c;读大量的书&#xff0c;就可以解决。要把C作为日常语言&#xff0c;而不是一种程序语言&#xff0c;这样就好办了。 有人又要问我&#xff0c;那么…

CentOS6.5安装配置

一、网络设置&#xff1a; 1、命令&#xff1a;vim /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICEeth0 HWADDR00:0C:29:34:11:33 TYPEEthernet UUID6a0e083b-7d65-4afe-9d6f-f42f97659c89 ONBOOTyes NM_CONTROLLEDyes …

js踩过的一些坑

参考我的博客&#xff1a;http://www.isedwardtang.com/2017/08/29/js-bug/转载于:https://www.cnblogs.com/EdwardTang/p/7476769.html

开发中的几款小工具

文本编辑器 ckediter,kindediter,uediter比较多。 http://q.sohu.com/asset/group/ueditor/editor_all.js 马克鳗 用于: 截图测量&#xff0c;取颜色 代码比较工具 Beyond Compare sql书写智能提示工具 SQLPrompt sql自动提示,安装SQLPrompt工具options--->qualification---…

使用PDO总结

PHP使用PDO总结1、php.ini中开启PDO扩展&#xff1a; extensionphp_pdo.dll 重启Apache&#xff01; 2、PDO 构造方法 一共需要三个字段,分别为数据库配置信息&#xff0c;用户名&#xff0c;用户密码 其中数据库配置信息写法mysql:host192.16;post3306;charsetutf-8;dbnametes…

自己写的Python数据库连接类和sql语句拼接方法

python # SQL 查询语句sql "SELECT * FROM user where username %s" % username " and password %s" % password "" 参考&#xff1a; https://www.cnblogs.com/Xjng/p/3821827.html

注册表-显示回收站

WinXP系统下恢复不小心删掉的回收站图标&#xff01; 修改注册表法 1.单击“开始”\“运行”&#xff0c;在“打开”中键入“regedit”&#xff0c;运行注册表编辑器&#xff1b; 2.依次展开注册表至&#xff1a;HKEY&#xff3f;CURRENT&#xff3f;USER\Software\Microsoft\W…

自己如何获取ADO连接字符串

自己如何获取ADO连接字符串 摘自&#xff1a;http://blog.csdn.net/zyq5945/article/details/5586423 有时候我们参考网上的ADO连接字符串写未必就能连接上数据库。今天详细介绍下这个很流行的如何获取ADO字符串的方法&#xff0c;就能很容易直观看到这个连接字符串是否真能连接…

phpstorm+xdebug配置分享

一、选择XDEBUG扩展 xdebug下载地址&#xff1a;https://xdebug.org/download.php 注意&#xff1a;带"ts"是线程安全的意思&#xff0c;"nts"的他没有标示&#xff0c;也就是说&#xff0c;如果是nts的要下载没标示的&#xff0c;下载下来的文件名其实是有…

Flask框架Flask-Login用法分析

参考&#xff1a; https://www.cnblogs.com/cjnmy36723/p/5212047.html https://www.jianshu.com/p/06bd93e21945 Flask-Login插件中带了6种信号&#xff0c;可以基于其中的信号做一些额外工作&#xff0c;比如user_logged_in来记录用户的登录次数和登录IP等。 安装 ? 1 p…

spi驱动 (2):应用与测试

大幅度转载于:https://www.cnblogs.com/zhangyin-ethan/p/7481725.html