JAVA爬需要账号登录的网_Java 爬虫遇到需要登录的网站,该怎么办?

news/2024/5/15 8:57:12/文章来源:https://blog.csdn.net/weixin_39768083/article/details/114661185

a3318c941136e31422f9e0be7c9e8802.gif

Java 爬虫遇到需要登录的网站,该怎么办?-1.jpg (32.2 KB, 下载次数: 0)

2020-11-17 07:54 上传

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

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

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

a3318c941136e31422f9e0be7c9e8802.gif

Java 爬虫遇到需要登录的网站,该怎么办?-2.jpg (19.75 KB, 下载次数: 0)

2020-11-17 07:54 上传

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

手动设置 cookie

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

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

如下图所示:

a3318c941136e31422f9e0be7c9e8802.gif

Java 爬虫遇到需要登录的网站,该怎么办?-3.jpg (32.72 KB, 下载次数: 0)

2020-11-17 07:54 上传

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

a3318c941136e31422f9e0be7c9e8802.gif

Java 爬虫遇到需要登录的网站,该怎么办?-4.jpg (40.37 KB, 下载次数: 0)

2020-11-17 07:54 上传

从代码中可以看出跟不需要登陆的网站没什么区别,只是多了一个.header("Cookie", "your cookies"),我们把浏览器中的 cookie 复制到这里即可,编写 main 方法

a3318c941136e31422f9e0be7c9e8802.gif

Java 爬虫遇到需要登录的网站,该怎么办?-5.jpg (12.39 KB, 下载次数: 0)

2020-11-17 07:54 上传

运行 main 得到结果如下:

a3318c941136e31422f9e0be7c9e8802.gif

Java 爬虫遇到需要登录的网站,该怎么办?-6.jpg (16.86 KB, 下载次数: 0)

2020-11-17 07:54 上传

可以看出我们成功获取到了缺心眼那叫单纯,这说明我们设置的 cookie 是有效的,成功的拿到了需要登陆的数据。这种方式是真的比较简单,唯一的不足就是需要频繁的更换 cookie,因为 cookie 会失效,这让你使用起来就不是很爽啦。

模拟登陆方式

模拟登陆的方式可以解决手动设置 cookie 方式的不足之处,但同时也引入了比较复杂的问题,现在的验证码形形色色、五花八门,很多都富有挑战性,比如在一堆图片中操作某类图片,这个还是非常有难度,不是随便就能够编写出来。所以对于使用哪种方式这个就需要开发者自己去衡量利弊啦。今天我们用到的豆瓣网,在登陆的时候就没有验证码,对于这种没有验证码的还是比较简单的,关于模拟登陆方式最重要的就是找到真正的登陆请求、登陆需要的参数。 这个我们就只能取巧了,我们先在登陆界面输入错误的账号密码,这样页面将不会跳转,所以我们就能够轻而易举的找到登陆请求。我来演示一下豆瓣网登陆查找登陆链接,我们在登陆界面输入错误的用户名和密码,点击登陆后,在 network 查看发起的请求链接,如下图所示:

a3318c941136e31422f9e0be7c9e8802.gif

Java 爬虫遇到需要登录的网站,该怎么办?-7.jpg (44.56 KB, 下载次数: 0)

2020-11-17 07:54 上传

从 network 中我们可以查看到豆瓣网的登陆链接为https://accounts.douban.com/j/mobile/login/basic,需要的参数有五个,具体参数查看图中的 Form Data,有了这些之后,我们就能够构造请求模拟登陆啦。登陆后进行后续操作,接下来我们就用 Jsoup 来模拟登陆到获取豆瓣主页昵称,具体代码如下:

a3318c941136e31422f9e0be7c9e8802.gif

Java 爬虫遇到需要登录的网站,该怎么办?-8.jpg (46.13 KB, 下载次数: 0)

2020-11-17 07:54 上传

这段代码分两段,前一段是模拟登陆,后一段是解析豆瓣主页,在这段代码中发起了两次请求,第一次请求是模拟登陆获取到 cookie,第二次请求时携带第一次模拟登陆后获取的cookie,这样也可以访问需要登陆的页面,修改 main 方法

a3318c941136e31422f9e0be7c9e8802.gif

Java 爬虫遇到需要登录的网站,该怎么办?-9.jpg (20.54 KB, 下载次数: 0)

2020-11-17 07:54 上传

运行 main 方法,得到如下结果:

a3318c941136e31422f9e0be7c9e8802.gif

Java 爬虫遇到需要登录的网站,该怎么办?-10.jpg (14.96 KB, 下载次数: 0)

2020-11-17 07:54 上传

模拟登陆的方式也成功的获取到了网名缺心眼那叫单纯,虽然这已经是最简单的模拟登陆啦,从代码量上就可以看出它比设置 cookie 要复杂很多,对于其他有验证码的登陆,我就不在这里介绍了,第一是我在这方面也没什么经验,第二是这个实现起来比较复杂,会涉及到一些算法和一些辅助工具的使用,有兴趣的朋友可以参考崔庆才老师的博客研究研究。模拟登陆写起来虽然比较复杂,但是只要你编写好之后,你就能够一劳永逸,如果你需要长期采集需要登陆的信息,这个还是值得你的做的。除了使用 jsoup 模拟登陆外,我们还可以使用 httpclient 模拟登陆,httpclient 模拟登陆没有 Jsoup 那么复杂,因为 httpclient 能够像浏览器一样保存 session 会话,这样登陆之后就保存下了 cookie ,在同一个 httpclient 内请求就会带上 cookie 啦。httpclient 模拟登陆代码如下:

a3318c941136e31422f9e0be7c9e8802.gif

Java 爬虫遇到需要登录的网站,该怎么办?-11.jpg (40.82 KB, 下载次数: 0)

2020-11-17 07:54 上传

运行这段代码,返回的结果也是 true。

有关 Java 爬虫遇到登陆问题就聊得差不多啦,来总结一下:对于爬虫遇到登陆问题有两种解决办法,一种是手动设置cookie,这种方式适用于短暂性采集或者一次性采集,成本较低。另一种方式是模拟登陆的方式,这种方式适用于长期采集的网站,因为模拟登陆的代价还是蛮高的,特别是一些变态的验证码,好处就是能够让你一劳永逸

以上就是 Java 爬虫时遇到登陆问题相关知识分享,希望对你有所帮助,下一篇是关于爬虫是遇到数据异步加载的问题。如果你对爬虫感兴趣,不妨关注一波,相互学习,相互进步

源代码:

https://github.com/BinaryBall/java-base/blob/master/crawler/src/main/java/com/jamal/crawler/CrawleLogin.java作者:平头哥的技术博文来源:掘金商业用途请与原作者联系,本文只做展示分享,不妥侵删!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_724181.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mysql在大型网站的应用架构演变

为什么80%的码农都做不了架构师?>>> 写在最前: 本文主要描述在网站的不同的并发访问量级下,Mysql架构的演变。 可扩展性 架构的可扩展性往往和并发是息息相关,没有并发的增长,也就没有必要做高可扩展性…

知名网站的技术发展历程

互联网已经发展多年,其中不乏脱颖而出者,这些网站多数都已存在了接近10年或10年以上,在如此长时间的发展过程中,除了业务上面临的挑战,在技术上也面临了很多的挑战。我挑选了一些Alexa排名较前的网站(排名截…

eyoucms 分享一下网站内容建设技巧有哪些

网站制作中有句话“内容为王”。由此可以得出网站的内容对网站的制作是多么重要,网站内容是网站的核心,也是网站进行SEO优化的重点。所以,不管是网站的制作还是网站的SEO优化,网站内容都要做好,并且要更新一些有特色的…

从搞网站蹭灰产,终于又回到了自媒体

写下这篇文章,也借此回忆了这些年经历网络创业艰辛的岁月、时光,建过网站,接触过灰产,后来还是走上了自媒体厮杀一片红海中,自由网络创业的路艰难而又漫长,其中也有几点心得与君共享。曾经记得高中语文老师…

如何做好大数据时代的SEO?

榜首步:淘取SEO中心关键词SEO中心关键词是指能给网站带来80%流量的关键词。一个企业的中心关键词要达到50-100个之间。怎样去选择呢?办法许多,比方经过联想办法,或者是下拉办法,还有经过百度指数的办法等。还有一个最直…

jsp网站ico图标设置

版权声明&#xff1a;转载请注明作者及出处&#xff0c;否则将追究法律责任。 https://blog.csdn.net/q2158798/article/details/83350974 学习记录&#xff1a;小技巧 web项目中设置ico图标 ico图标放在webapp下 在jsp页面中引入(ps:每个jsp都要引入) <!-- 网站图标 -->…

美国物理学会Physics网站公布“年度亮点”工作,AlphaFold和潘建伟团队成果等入选

凭借詹姆斯韦伯太空望远镜拍摄的令人惊叹的图像、激光聚变的突破、升级后的大型强子对撞机的启动以及小行星防御系统的首次测试&#xff0c;2022 年提供了大量的宏伟成果。 在生物、量子和凝聚态物理学方面也有重要的小规模努力&#xff0c;以及在多样性、公平性和包容性方面的…

基于LAMP平台的网站架构(或Web系统架构)

1.网站架构的前提&#xff08;或者说需求&#xff09; 我们公司是一电子商务的网站&#xff0c;因为线下家具建材项目的推广需求&#xff0c;从而有了我们公司的这个线上网站&#xff0c;在这里我贴一张公司的网站架构图。 总体来说网站规模不是太大&#xff0c;注册人数在150万…

ASP.NET网站部署

1、安装WebDeploymentSetup_2008插件。 2、安装完成后&#xff0c;右键需要发布的网站&#xff0c;点击”Add Web Deploymenet project ”选项&#xff0c;如图1.1.1 图1.1.1 3、 点击该选项并输入发布生成文件目录地址&#xff0c;确定后&#xff0c;项目中会出现如图1.1.2项…

电商实例、业务并发、网站并发及解决办法

电商实例、业务并发、网站并发及解决方法 一、怎么防止多用户同一时间抢购同一商品&#xff0c;防止高并发同时下单同一商品 最近在做抢购系统&#xff0c;但头疼的是&#xff0c;在多用户高并发的情况下经常会库存出现问题。排查到&#xff0c;在同一时间内多用户同时下单导致…

整理了一周的Python资料,包含各阶段所需网站、项目,收藏了慢慢来

这周应该有不少学校已经开学了&#xff0c;那么同学们都该动起来了&#xff0c;把家里面的那些懒习惯给扔掉了可以。 不知怎么的&#xff0c;最近不少关注我的读者都开始私信我怎么学好python&#xff1f;零基础转行是不是合适&#xff0c;还有希望吗&#xff1f;今年30了&…

推荐一个下载源码的网站

我想下载javax.validation:validation-api的源码&#xff0c;但是从搜索引擎里搜了半天也没有找到下载地址。 后来我找到了一个网站&#xff0c;可以搜索、可以下载jar包、也可以下载源码包&#xff0c;就非常棒。就这个&#xff1a;Maven中央搜索库 搜索javax-validation&am…

url模糊匹配优化_网站优化需要掌握的方法和技巧

一个网站建设好之后如果不进行优化那么这个网站想要发展起来是非常困难的&#xff0c;但是网站优化又不是一件简单的事情&#xff0c;其中需要掌握的方法以及技巧还是挺多的&#xff0c;那么今天就来为大家介绍一下网站优化需要掌握的方法和技巧吧!一、网站的结构1.一个网站在优…

Struts2结合sitemesh3制作网站母版页面

上一篇文章介绍了sitemesh3的使用&#xff0c;这篇文章来介绍如何结合struts2来配置和使用sitemesh&#xff0c;具体的如何使用sitemesh3我就不讲解了&#xff0c;这个你们可以看看我的上一篇博客。 首先你要添加struts和sitemesh相关的jar包&#xff1a; 添加完毕后&#xff0…

windows server2008 iis 7部署及网站部署完整步骤

windows server2008 iis 7部署及网站部署完整步骤windows2008下的iis7安装部署&#xff0c;web 网站的配置&#xff0c;不是很熟练&#xff0c;每次都得google。下面整理一个完整步骤&#xff0c;以备使用1&#xff09; iis7安装&#xff1a;默认系统装完之后&#xff0c;是不会…

NodeJs Express MySQL 搭建电影网站:第一期(搭建Express项目、路由构建、jade 页面构建和模拟数据)

效果展示&#xff1a; 首页&#xff1a; 详情页面: 后台&#xff1a;电影添加页面 后台&#xff1a;电影列表 第一步&#xff1a;创建movie 应用 express movie 第二步&#xff1a;movie应用依赖第三方模块&#xff08;MySQL body-parser&#xff09; cnpm install mysql …

NodeJs Express MySQL 搭建电影网站:第二期(MySQL 数据增删改查操作)

第一步&#xff1a;编辑相关页面路由信息&#xff0c;使用MySQL填充数据 编辑movie/routes/index.js 文件 var express require(express); var router express.Router();var dbrequire(./../db.js); // 引入自定义DB 模块 var bodyParserrequire("body-parser");…

查看论坛隐藏链接_【外链建设】测试了1500个hao123推荐的网站,只为挖掘发能外链的DZ论坛...

点击上面“蓝字”关注&#xff01;虽然已经过了外链为皇的时代&#xff0c;但外链在新站建设、重点关键词排名等工作场景中依然占据着很重要的位置。因为我工作后&#xff0c;大部分的时间在做品牌SEO&#xff0c;没有积攒什么外链资源&#xff1b;这次要梳理SEO技术&#xff0…

iis服务器网站启动不了,IIS上打不开asp网站怎么办

导读&#xff1a;最近很多朋友都遇到iis上打不开asp的站点这种问题&#xff0c;然后来问我们为什么IIS不支持asp&#xff0c;其实这种问法是错误的&#xff0c;windows系统和asp同属于微软软件系列&#xff0c;都是微软开发&#xff0c;所以互相之间的支持和兼容就无需置疑了&a…

(比较 tika 和正则 ,我更喜欢jsoup ) jsoup 抓取 iteye 网站

jsoup 效果 qq新闻 内容抓取 正则表达 &#xff08;正则&#xff09; http://knight-black-bob.iteye.com/blog/2312411 比较 tika 和正则 &#xff0c;我更喜欢jsoup 正则 比较难写 &#xff0c;&#xff0c; &#xff0c;&#xff0c;&#xff0c;&#xff0c; 下面有jar …