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文本字符串
- /**
- * 解析一个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状态返回码可參照最后部分,或者推荐的那本书
- /**
- * 通过请求地址获取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头的更多相关文章
- Jsoup抓取网页数据完成一个简易的Android新闻APP
前言:作为一个篮球迷,每天必刷NBA新闻.用了那么多新闻APP,就想自己能不能也做个简易的新闻APP.于是便使用Jsoup抓取了虎扑NBA新闻的数据,完成了一个简易的新闻APP.虽然没什么技术含量,但 ...
- java Jsoup 抓取页面数据
List<ImageBean> imgList = new ArrayList<ImageBean>(); ImageBean image = null; String ima ...
- jsoup抓取网页+具体解说
jsoup抓取网页+具体解说 Java 程序在解析 HTML 文档时,相信大家都接触过 htmlparser 这个开源项目.我以前在 IBM DW 上发表过两篇关于 htmlparser 的文章.各自 ...
- iOS—网络实用技术OC篇&网络爬虫-使用java语言抓取网络数据
网络爬虫-使用java语言抓取网络数据 前提:熟悉java语法(能看懂就行) 准备阶段:从网页中获取html代码 实战阶段:将对应的html代码使用java语言解析出来,最后保存到plist文件 上一 ...
- java抓取网页数据,登录之后抓取数据。
最近做了一个从网络上抓取数据的一个小程序.主要关于信贷方面,收集的一些黑名单网站,从该网站上抓取到自己系统中. 也找了一些资料,觉得没有一个很好的,全面的例子.因此在这里做个笔记提醒自己. 首先需要一 ...
- iOS开发——网络实用技术OC篇&网络爬虫-使用java语言抓取网络数据
网络爬虫-使用java语言抓取网络数据 前提:熟悉java语法(能看懂就行) 准备阶段:从网页中获取html代码 实战阶段:将对应的html代码使用java语言解析出来,最后保存到plist文件 上一 ...
- web scraper 抓取网页数据的几个常见问题
如果你想抓取数据,又懒得写代码了,可以试试 web scraper 抓取数据. 相关文章: 最简单的数据抓取教程,人人都用得上 web scraper 进阶教程,人人都用得上 如果你在使用 web s ...
- [Python爬虫] 之八:Selenium +phantomjs抓取微博数据
基本思路:在登录状态下,打开首页,利用高级搜索框输入需要查询的条件,点击搜索链接进行搜索.如果数据有多页,每页数据是20条件,读取页数 然后循环页数,对每页数据进行抓取数据. 在实践过程中发现一个问题 ...
- [Python爬虫] 之四:Selenium 抓取微博数据
抓取代码: # coding=utf-8import osimport refrom selenium import webdriverimport selenium.webdriver.suppor ...
随机推荐
- FOJ 1607 Greedy division 数学题
题目地址: http://acm.fzu.edu.cn/problem.php?pid=1607 给定一个n,将n平均分成m份,问有几种方法,每种方法中找出最大的数.思路:就是求n的因子数.先将每个数 ...
- Swift - 歌曲播放样例(附带播放时间和播放进度)
使用MPMoviePlayerController我们可以是进行音乐播放,下面是一个播放器样例.同时,播放时还可以显示播放时间和播放进度. 1 2 3 4 5 6 7 8 9 10 11 12 13 ...
- memcached vs MySQL Memory engine table 速度比较_XMPP Jabber即时通讯开发实践_百度空间
memcached vs MySQL Memory engine table 速度比较_XMPP Jabber即时通讯开发实践_百度空间 memcached vs MySQL Memory engin ...
- MySQL 通配符学习总结
MySQL 通配符 SQL您同意使用模式匹配"_"无论单个字符相匹配,和"%"匹配随意数目字符(包含零个字符). 在 MySQL中.SQL的模式缺省是忽略大写和 ...
- js弹出对话框,遮罩效果,
刚刚来到实习单位,我跟着廖哥做项目.然后他分配给我一个小小的任务,实现起来总的效果如下: 然后,但我们单击显示数目这个链接的时候,就会弹出一个又遮罩效果的对话框,如下图: 当我们在对话框中再点击里面的 ...
- vc2008构建和使用libcurl静态库
1>下载CURL源代码curl-7.26.0.zip 2>用VC2008/2005打开工程curl-7.26.0\lib\libcurl.vcproj,转换下工程并构建,可以直接编译成功! ...
- java学习笔记09--反射机制
java学习笔记09--反射机制 什么是反射: 反射是java语言的一个特性,它允许程序在运行时来进行自我检查并且对内部的成员进行操作.例如它允许一个java的类获取他所有的成员变量和方法并且显示出来 ...
- OCP读书笔记(4) - 配置备份设置
4.Configuring Backup Settings 查看RMAN持久化设置 [oracle@easthome ~]$ rman target / RMAN> show all; SQL& ...
- HDU4719-Oh My Holy FFF(DP线段树优化)
Oh My Holy FFF Time Limit: 5000/2500 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others) T ...
- MTK Android Driver:GPIO
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2JrODYxMTEw/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA ...