最近项目需求,做一些新闻站点的爬取工作。
1.简单的jsoup爬取,静态页面形式;

String url="a.atimo.cn";//静态页面链接地址
Document doc = Jsoup.connect(url).userAgent("Mozilla").timeout(4000).get();
if(doc!=null){
Elements es = doc.select("div.comments>ul>li");//
System.out.println(es);
if(es!=null && es.size()>0){
for (Element element : es) {
String link = element.select("div>h3").attr("href");
String title = element.select("div>h3").text();
String author = element.select("div.c-abstract>em").text();
String content = element.select("dd>a>div.icos>i:eq(1)").text();
}
}
}

通过jsop解析返回Document 使用标签选择器,选择页面标签中的值,即可获取页面内容。

2.延时加载,有些网站存在延时加载,表格内容,或者嵌入页面形式的加载的页面;
属于jsop范围

        //构造一个webClient 模拟Chrome 浏览器
String url = "https://www.cnblogs.com/atimo/";
WebClient webClient = new WebClient(BrowserVersion.CHROME);
//支持JavaScript
webClient.getOptions().setUseInsecureSSL(true);
webClient.getOptions().setJavaScriptEnabled(true);
webClient.getOptions().setCssEnabled(false);
webClient.getOptions().setActiveXNative(false);
webClient.getOptions().setCssEnabled(false);
webClient.getOptions().setThrowExceptionOnScriptError(false);
webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
webClient.getOptions().setTimeout(3000000);
HtmlPage rootPage = webClient.getPage(url);
String html = rootPage.asXml();
Document document = Jsoup.parse(html);
Elements es = document.select("div.comments");//.select("#content_left");
System.out.println(es);
if(es!=null && es.size()>0){
for (Element element : es) {
String link = element.select("div.f13>a").attr("href");
String title = element.select("div>h3>a").text();
String text = element.select("div.c-abstract>em").text();
}
}

获取到的是Document 使用标签选择器,选择页面标签中的值,即可获取页面内容。

3.获取评论或其他内容,返回json数据;js请求
普通请求,只需要使用
 HttpURLConnection connection = createRequest(url, "GET");
  // 建立实际的连接 connection.connect(); 
发送GET请求过去json数据后解析即可;
4.js请求带请求头参数(部分为移动端请求)

            CloseableHttpClient https = HttpClients.createDefault();
String url = "https://action=hene=124&devicetype=androidlag=zh_CN&nettyene=3&pass_ticwx_header=1";
HttpGet httpPost = new HttpGet(url);
httpPost.addHeader("Host", "mp.weixin.qq.com");
httpPost.addHeader("x-wechat-uin", wechartCookie.getUin());
httpPost.addHeader("x-", "参数");
HttpResponse response = https.execute(httpPost);
HttpEntity entitySort = response.getEntity();
String html = EntityUtils.toString(entitySort, "utf-8");

请求头参数根据抓包工具拦截的请求时需要的参数变更;

 

关于java获取网页内容的更多相关文章

  1. Java——获取网页内容并在本地生成HTML文件

    使用java.net包下的URL类,可以将一个网页(链接)封装成一个URL对象. URL对象有一个openStream()方法,使用该方法可以获取该网页的输入流,我们可以通过读取输入流的方式获得网页的 ...

  2. 基于apache —HttpClient的小爬虫获取网页内容

    今天(17-03-31)忙了一下午研究webmagic,发现自己还太年轻,对于这样难度的框架(类库) 还是难以接受,还是从基础开始吧,因为相对基础的东西教程相多一些,于是乎我找了apache其下的 H ...

  3. Java获取URL对应的资源

    Java获取URL对应的资源   认识IP.认识URL是进行网络编程的第一步.java.net.URL提供了丰富的URL构建方式,并可以通过java.net.URL来获取资源.   一.认识URL   ...

  4. 【C#】获取网页内容及HTML解析器HtmlAgilityPack的使用

    最近经常需要下载一些东西,而这个下载地址又会经过层层跳转,每个页面上都有很多广告,烦不胜烦,所以做了一个一键获得最终下载地址的小工具.使用C#,来获取网页内容,然后通过HtmlAgilityPack获 ...

  5. java获取https网站证书,附带调用https:webservice接口

    一.java 获取https网站证书: 1.创建一个java工程,新建InstallCert类,将以下代码复制进去 package com; import java.io.BufferedReader ...

  6. java获取图片原始尺寸

    java获取图片原始尺寸 URL url = null; InputStream is = null; BufferedImage img = null; try { url = new URL(pi ...

  7. C#获取网页内容的三种方式

    C#通常有三种方法获取网页内容,使用WebClient.WebBrowser或者HttpWebRequest/HttpWebResponse... 方法一:使用WebClient (引用自:http: ...

  8. java学习第13天( java获取当前时间,有关大数据的运算及精确数字运算,Date类)

    一 java获取当前时间 学习一个函数,得到当前时间的准确值 System.currectTimeMillis(). 可以得到以毫秒为单位的当前时间.它主要用于计算程序运行时间,long start= ...

  9. Java获取Web服务器文件

    Java获取Web服务器文件 如果获取的是服务器上某个目录下的有关文件,就相对比较容易,可以设定死绝对目录,但是如果不能设定死绝对目录,也不确定web服务器的安装目录,可以考虑如下两种方式: 方法一: ...

随机推荐

  1. 使用jenkins配置.net mvc5网站自动构建全过程记录

    持续集成是个简单重复劳动,人来操作费时费力,使用自动化构建工具完成是最好不过的了.最终可以实现的一个效果是,svn提交代码,服务器端自动编译并发布. 所使用的版本:windows server 200 ...

  2. java 编写小工具 尝试 学习(六)

    1.java 布局管理器-布局管理器之null布局(空布局) 的 学习,参考大神教程:http://www.cnblogs.com/liaoliao/p/5009445.html import jav ...

  3. C# 类中的静态字段始终继承自基类

    我们试想一下现在有一个类Parent,它有一个static的int类型字段number,然后如果类Parent有三个子类Child01.Child02和Child03,那么改变Parent.numbe ...

  4. Vim插件及.vimrc文件的配置

    关于Vim的配置基本是在.vimrc文件中完成的,该文件一般放在用户目录下. 今天安装了插件管理器Pathogen和python自动补全的插件pydiction,其中Pathogen需要事先创建两个文 ...

  5. stylus(css预编译器)

    推荐去张鑫旭大神这里详细了解:http://www.zhangxinxu.com/jq/stylus/ 安装 npm install -g stylus 自动编译 $ stylus -w demo.s ...

  6. Java关于NIO类的详解

    一.IO与NIO的区别: 前提我们先说一说java IO: Java中使用IO(输入输出)来读取和写入,读写设备上的数据.硬盘文件.内存.键盘......,根据数据的走向可分为输入流和输出流,这个走向 ...

  7. CF1066D Boxes Packing(二分答案)

    题意描述: 你有$n$个物品,每个物品大小为$a_i$,$m$个盒子,每个盒子的容积为$k$.$Maksim$先生想把物品装入盒子中.对于每个物品,如果能被放入当前的盒子中,则放入当前盒子,否则换一个 ...

  8. 在控制台中操作MYSQL数据库步骤以及一些小问题

    一直用Navicat来对MySQL数据库进行操作,今天突然想试试用DOS控制台来操作,特记录自己第一次使用经历,若有错误之处,还望大佬们指点. 首先打开控制台,win+R键,输入cmd,确定 输入my ...

  9. Debian中CodeIgniter+nginx+MariaDB+phpMyAdmin配置

    本文不讲述软件安装过程,记述本人在Debia中配置CodeIgniter时遇到的问题及解决方法,希望能够为有需要的人提供帮助. 一.Debian版本及所需的软件 Debian 9.8 stretch ...

  10. 帆软SQL报异常:多表连接的时候出现错误:未明确定义列

    我刚开始的代码: select dm_veh_jdcgz_mx.DAY_ID ,--日期 dm_veh_jdcgz_mx.GLBM ,--管理部门ID dm_veh_jdcgz_mx.SFZMHM , ...