java多方式登陆_Java 爬虫遇到需要登录的网站,该怎么办?

news/2024/7/8 2:38:43
3fdcb621e7b55747d7756877ff4de844.png

这是 Java 网络爬虫系列博文的第二篇,在上一篇Java 网络爬虫,就是这么的简单中,我们简单的学习了一下如何利用 Java 进行网络爬虫。在这一篇中我们将简单的聊一聊在网络爬虫时,遇到需要登录的网站,我们该怎么办?

在做爬虫时,遇到需要登陆的问题也比较常见,比如写脚本抢票之类的,但凡需要个人信息的都需要登陆,对于这类问题主要有两种解决方式:一种方式是手动设置 cookie ,就是先在网站上面登录,复制登陆后的 cookies ,在爬虫程序中手动设置 HTTP 请求中的 Cookie 属性,这种方式适用于采集频次不高、采集周期短,因为 cookie 会失效,如果长期采集的话就需要频繁设置 cookie,这不是一种可行的办法,第二种方式就是使用程序模拟登陆,通过模拟登陆获取到 cookies,这种方式适用于长期采集该网站,因为每次采集都会先登陆,这样就不需要担心 cookie 过期的问题。

为了能让大家更好的理解这两种方式的运用,我以获取豆瓣个人主页昵称为例,分别用这两种方式来获取需要登陆后才能看到的信息。获取信息如下图所示:

94b81439c823be86f71838591eb7817c.png

获取图片中的缺心眼那叫单纯,这个信息显然是需要登陆后才能看到的,这就符合我们的主题啦。接下来分别用上面两种办法来解决这个问题。

手动设置 cookie

手动设置 cookie 的方式,这种方式比较简单,我们只需要在豆瓣网上登陆,登陆成功后就可以获取到带有用户信息的cookie,豆瓣网登录链接:

https://accounts.douban.com/passport/login

如下图所示:

c58d90ab13e4ff9bc30398131cc18bd5.png

图中的这个 cookie 就携带了用户信息,我们只需要在请求时携带这个 cookie 就可以查看到需要登陆后才能查看到的信息。我们用 Jsoup 来模拟一下手动设置 cookie 方式,具体代码如下:

5b01055eef1acde23d44c159628164c2.png

从代码中可以看出跟不需要登陆的网站没什么区别,只是多了一个.header("Cookie


http://www.niftyadmin.cn/n/3752788.html

相关文章

【LeetCode】233. 数字 1 的个数(同剑指Offer43)

一、题目 给定一个整数 n,计算所有小于等于 n 的非负整数中数字 1 出现的个数。 示例: 输入: 13 输出: 6 解释: 数字 1 出现在以下数字中: 1, 10, 11, 12, 13 。二、解决 1、暴力破解 思路: 看完题目,然后可直接写出代码,b…

向文件in.txt中写入字符串helloworld_Python操作文件

1、文件的操作(打开,读,写,重命名,删除等)1.1、打开文件(open)open(文件名,r) : 只读方式打开文件open(文件名,r) : 以读写方式打开,文件不存在报错open(文件名,w) : 可写方式打开文件open(文件名,w) : 以读写方式打开…

nginx安装部署mysql负载均衡_nginx+tomcat+mysql进行负载均衡

Nginxtomcat负载均衡群集准备工作:1台节点部署nginx2台节点部署tomcat1台部署mysql所有机器之间网络互通,并已关闭防火墙和selinux一、Nginx配置1.主配置文件配置:vim nginx.confUpstream字段中配置tomcat所在服务器IP地址,后缀要…

mysql total语法_mysql基础知识语法汇总整理(二)

insert/*insert*/insert into 表名(字段列表) values(值列表);--蠕虫复制 (优点:快速复制数据,测试服务器压力)insert into 表名1_插入 select (字段列表) from表名2_复制;例如:create tablecopy(idint(10) unsigned not null comment id,namechar(20) not null default comme…

mysql中怎么实现Apriori_关联规则Apriori算法及实现(python)

一,概念表1某超市的交易数据库交易号TID顾客购买的商品交易号TID顾客购买的商品T1面包,奶油,牛奶,茶T6面包,茶T2面包,奶油,牛奶T7啤酒,牛奶,茶T3蛋糕,牛奶T8面…

mysql解题思路_BUUCTF-Web-随便注(三种解题思路)

知识点:SQL注入-堆叠注入,sql预处理语句,巧用contact()函数绕过堆叠注入原理:在SQL中,分号(;)是用来表示一条sql语句的结束。试想一下我们在分号(;)结束一个sql语句后继续构造下一条语句,会不会一起执行?因此这个想法也就造就了堆…

odp 加固 mysql_安装使用ODP.Net 问题及说明

最近使用VS2010时发现System.Data.OracleClient不再受微软支持,而是推荐使用Oracle自己的ODP.Net,于是就踏上了纠结的安装ODP.net的道路首先我到oracle的官网注册了账号并下载了ODTwithODAC112021这个版本(http://www.oracle.com/technetwork/database/windows/downloads/index…

stubtotally sutb

OSPF Stub area & Totally stub 一、 实验目的 1、 stub和totally stub区域存在的条件。 2、 它们会对哪几类LSA进行过滤。 3、 它们存在的好处 二、 实验拓扑 三、 Stub区域实验 首先将RIP重发布到area 2 内。查看R1的路由表和OS…