java模拟登陆爬虫 原

1、添加依赖

	    <dependency>
			<groupId>org.jsoup</groupId>
			<artifactId>jsoup</artifactId>
			<version>1.9.2</version>
		</dependency>

2、示例代码

package com.neo;

import org.jsoup.Connection;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

/**
 * The type Crawler test.
 *
 * @author weixiang.wu
 */
public class CrawlerTest {

	/**
	 * The entry point of application.
	 *
	 * @param args the input arguments
	 * @throws IOException the io exception
	 */
	public static void main(String[] args) throws IOException {
		//想要爬取的url
		String url = "https://www.?.com/at/api.html?url=admin_member_list";
		String username = "?";
		String password = "?";
		Map<String, String> sessionId = getSessionInfo(username, password);
		String todoSomething = httpPost(sessionId, url);
	}

	private static Map<String, String> getSessionInfo(String username, String password) throws IOException {
		//登录网站
		Connection.Response res = Jsoup.connect("https://www.?.com/at/login.html")
				.userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31")
				.data("username", username, "password", password)
				.method(Connection.Method.POST)
				.timeout(10000)
				.execute();
		//获取cookie
		Map<String, String> cookie = new HashMap<>();
		cookie.put("__cfduid", res.cookie("__cfduid"));
		cookie.put("PHPSESSID", res.cookie("PHPSESSID"));
		return cookie;
	}


	private static String httpPost(Map<String, String> sessionId, String url) throws IOException {
		//获取请求连接
		Connection con = Jsoup.connect(url).userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31")
				.cookies(sessionId).timeout(10000).ignoreContentType(true);
		//请求参数设置
		con.data("page", "1");
		con.data("pid", "0");
		con.data("level", "[1,2,3]");
		Document doc = con.post();
		System.out.println(doc);
		return doc.toString();
	}
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏算法修养

PAT 1018 Public Bike Management(Dijkstra 最短路)

1018. Public Bike Management (30) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16...

37790
来自专栏跟着阿笨一起玩NET

C#中往数据库插入/更新时候关于NUll空值的处理

本文转载:http://blog.csdn.net/chybaby/article/details/2338943

68510
来自专栏Golang语言社区

golang的一个分页方法

需要做一分页。。就做了个方法,beego里的例子太麻烦了。还是弄个简单的吧,上代码。。 //分页方法,根据传递过来的页数,每页数,总数,返回分页的内容 7个页...

356100
来自专栏个人分享

Hive metastore整体代码分析及详解

  从上一篇对Hive metastore表结构的简要分析中,我再根据数据设计的实体对象,再进行整个代码结构的总结。那么我们先打开metadata的目录,其目录...

75630
来自专栏个人分享

Hive metastore源码阅读(三)

  上次写了hive metastore的partition的生命周期,但是简略概括了下alter_partition的操作,这里补一下alter_partit...

31120
来自专栏数据结构与算法

BZOJ2438: [中山市选2011]杀人游戏(tarjan)

当然有一种例外情况是\(1 -> 3, 2 -> 3\),也就是存在一个孤立点,判掉即可

12220
来自专栏JadePeng的技术博客

C# 词典数据结构设计【附demo】

分析 要建立词典,最基本的应该有词典的描述信息、词典索引文件以及词典数据文件。 /// <summary> /// 索引文件 /// </summary>...

36640
来自专栏函数式编程语言及工具

浅谈Slick(1)- 基本功能描述

   Slick (Scala language-integrated connection kit)是scala的一个FRM(Functional Relat...

19470
来自专栏开发与安全

汇编语言/C51/C语言/C++中左移<<、右移>>的不同

汇编: 1.对于51单片机:RLC A;即将累加器ACC中内容左移1位,最低位被CY原始值替代,最高位移入进位标志CY   中,同理还有RRC A。 具体使用...

357100
来自专栏haifeiWu与他朋友们的专栏

JDK 定时任务 Timer 与 ScheduledExecutorService 排坑记录

正在认真敲代码的楼主,突然收到数据维护系统发过来的报警邮件说楼主凌晨跑的定时任务没有成功,于是便开始了楼主今天的找坑填坑的过程。

37830

扫码关注云+社区

领取腾讯云代金券