`

使用htmlUnit和Jsoup获取163邮箱通讯录

    博客分类:
  • Web
阅读更多

import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;

import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
import com.gargoylesoftware.htmlunit.HttpMethod;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.WebRequest;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import com.gargoylesoftware.htmlunit.util.NameValuePair;

 

public class ContactList {
    public static void oneSixThree() throws FailingHttpStatusCodeException, IOException {
        String loginUrl = "http://reg.163.com/login.jsp?type=1&url=http://entry.mail.163.com/coremail/fcg/ntesdoor2?lightweight%3D1%26verifycookie%3D1%26language%3D-1%26style%3D3";
  
        WebClient client = new WebClient();
        client.getOptions().setJavaScriptEnabled(true);
        client.getOptions().setCssEnabled(false);
        client.getOptions().setThrowExceptionOnScriptError(false);
        client.getOptions().setTimeout(10000);

 

        List<NameValuePair> reqParams = new ArrayList<NameValuePair>();
        reqParams.add(new NameValuePair("product", "mail163"));
        reqParams.add(new NameValuePair("username", "xxx"));
        reqParams.add(new NameValuePair("password", "yyy"));
        reqParams.add(new NameValuePair("selType", "jy"));

 

        WebRequest webRequest = new WebRequest(new URL(loginUrl), HttpMethod.POST);
        webRequest.setRequestParameters(reqParams);  
        HtmlPage emailPage = (HtmlPage) client.getPage(webRequest);
        String url = emailPage.getUrl().toString();

        String sid = url.substring(url.indexOf("sid="));

        String contactUrl = "http://tg4a84.mail.163.com/jy3/address/addrprint.jsp?" + sid;
        HtmlPage contactPage = (HtmlPage) client.getPage(contactUrl);

 

        Document doc = Jsoup.parse(contactPage.asXml());
        Elements names = doc.select(".gTitleSub .mTT");
        Elements addresses = doc.select(".gTable tbody tr:first-child td");
        int size = names.size();
        for (int i = 0; i < size; i++) {
            System.out.println(names.get(i).text() + " " + addresses.get(i).text());
    }
 }

}

分享到:
评论

相关推荐

    htmlunit2.8 + jsoup1.7网站数据抓取

    本项目重点介绍了如何利用htmlunit2.8和jsoup1.7这两个强大的库来实现这一目标。下面我们将深入探讨这两个工具以及它们在数据抓取中的应用。 **htmlunit2.8** HtmlUnit是一个Java库,模仿了一个无头浏览器,能够...

    htmlunit2.12及jsoup1.5.2的jar包

    htmlunit 是一款开源的java 页面分析工具,读取页面后,可以有效的使用htmlunit分析页面上的内容。项目可以模拟浏览器运行,被誉为java浏览器的开源实现。这个没有界面的浏览器,运行速度也是非常迅速的。 jsoup 是...

    jsoup个人小案例(有结合htmlunit的)

    在结合使用JSoup和HtmlUnit时,通常的流程是这样的: 1. **初始化HtmlUnit**:创建一个WebClient实例,设置必要的配置,如浏览器版本、是否启用JavaScript等。 2. **加载页面**:使用WebClient的goTo()方法加载目标...

    通过htmlunit获取执行js代码后的html文档

    HTMLUnit内建了一个基于WebClient的组件,它能够加载网页、执行JavaScript和处理DOM(文档对象模型)。以下是使用HTMLUnit进行此类操作的基本步骤: 1. **导入库**:在Java项目中,你需要添加HTMLUnit的依赖。如果...

    Java爬虫Jsoup+httpclient获取动态生成的数据

    本文主要讲述如何利用Java编程语言中的Jsoup库和HttpClient工具包来获取和解析动态生成的数据,特别是那些通过JavaScript动态加载的数据。 ### Java爬虫基础 Java爬虫是指使用Java语言编写的一类程序,这些程序...

    jsoup_htmlunit_seleniumWebdriver_jar

    在本例中,jsoup、htmlunit2_2_6和htmlunit1_4都是包含相应库的.jar文件,供开发者在自己的项目中导入使用,以利用这些库的功能。 综合以上,这个压缩包提供了三个重要的Java库:用于HTML处理的Jsoup,无头浏览器...

    htmlunit爬取动态页面jar包

    3. **Jsoup库**:可能包含Jsoup,这是一个解析和操作HTML的Java库,HTMLUnit可能使用它来辅助解析和提取数据。 4. **JavaScript引擎**:HTMLUnit通常使用Rhino或Nashorn JavaScript引擎执行JavaScript代码,这些都...

    针对 httpclient4.* 绕验证码获取公司信息 包括 jsoup网页信息的爬虫及htmlUnit对动态网站信息的抓取

    本主题主要关注如何使用`httpclient4.*`库来绕过验证码获取公司信息,以及结合`jsoup`解析静态网页信息和`htmlUnit`处理动态网站的抓取。以下是对这些知识点的详细说明: 1. **httpclient4.***: Apache HttpClient...

    htmluinit+jsoup 网络爬虫 项目练习

    通过这个项目练习,你将全面掌握HTMLUnit和Jsoup的结合使用,以及网络爬虫的基本流程和技巧,从而提升你的Web数据获取能力。记得在实践中不断调试和完善,以便更好地应对各种复杂的网页结构和动态加载场景。

    htmlunit模拟cookie登录

    htmlunit 模拟cookie 存取 cookie值登录 如: wsyyuser.xywy.com Cookie c = new Cookie("wsyyuser.xywy.com", "PHPSESSID", Common.getValue("session_id") );

    htmlunit依赖jar包

    2. **HTML解析器**: HTMLUnit使用了Jsoup库来解析HTML文档,这使得它能够理解和处理复杂的DOM结构。 3. **JavaScript引擎**: HTMLUnit内嵌了Rhino或Nashorn JavaScript引擎,用于执行网页中的JavaScript代码。Rhino...

    jsoup-1.12.1.rar

    它提供了一种易于使用的API,用于提取和操作数据,具有浏览器一样的解析和筛选能力。在Java爬虫领域,jsoup扮演着至关重要的角色,使得开发者能够高效、准确地解析HTML文档,获取所需信息。 **1. jsoup的基础概念**...

    JAVA使用HtmlUnit爬虫工具模拟登陆CSDN案例

    在本案例中,我们首先需要引入HtmlUnit和Jsoup的依赖项,使用Maven配置进行依赖项的管理。HtmlUnit提供了一个WebClient类,用于模拟浏览器的行为,而Jsoup则是一个HTML解析工具,用于解析HTML文档。 在 main 方法中...

    Htmlunit2.23-bin.zip

    3. 文档和示例:可能包含API文档、用户指南以及示例代码,帮助开发者快速理解和使用HTMLUnit。 4. 测试类和资源:用于验证库功能的JUnit测试类和相关的测试资源。 使用HTMLUnit进行网页爬虫开发时,你可以: 1. ...

    htmlunit-2.36和htmlunit-2.50,包括关联文件

    使用HTMLUnit开发Java爬虫时,你需要确保你的环境已经安装了JDK 1.8或更高版本,因为这是HTMLUnit和相关依赖库运行的最低要求。一旦环境配置完成,你可以通过添加这些jar文件到你的项目类路径中,或者如果你使用的是...

    htmlunit 及其 依赖包

    HTMLUnit使用HttpClient来处理网络通信,包括GET和POST请求,设置请求头,处理重定向等。版本4.5.2提供了一套完整的HTTP协议实现,支持HTTPS和各种HTTP特性。 4. **xml-apis-1.4.01.jar**:这是一个XML API的集合,...

    htmlunit-2.8(api文档).zip

    在实际开发中,HTMLUnit可以与其他Java库如Jsoup或Selenium结合使用,以增强网页解析和爬虫的能力。例如,Jsoup擅长处理HTML结构,而Selenium则提供了更强大的浏览器模拟功能,当HTMLUnit不足以应对复杂的网页交互时...

    jsoup-1.8.1.jar

    jsoup-1.8.1是该库的一个较旧版本,自2015年发布以来,jsoup已经发布了多个新版本,添加了更多功能和优化。当前最新版本(截至撰写时)是1.14.x,建议开发者考虑升级以获得最新的改进和安全修复。jsoup有一个活跃的...

    jsoup+htmlunitl 爬取外币汇率

    在本文中,我们将深入探讨如何使用Jsoup和HtmlUnit库来爬取并处理网页上的外币汇率信息。这两个工具是Java编程语言中的强大选择,用于网络数据抓取和页面解析。 首先,Jsoup是一个用于处理实际世界HTML的Java库。它...

    htmlunit-2.14

    6. **API文档**:`htmlunit-2.14`中的API文档提供了详细的类和方法说明,是学习和使用HTMLUnit的关键资源。开发者可以通过阅读文档了解如何创建WebClient、导航到URL、执行JavaScript、处理网页元素等。 7. **集成...

Global site tag (gtag.js) - Google Analytics