python爬虫登录网站_python爬虫之scrapy模拟登录

news/2024/5/10 4:45:49/文章来源:https://blog.csdn.net/weixin_39827589/article/details/110114590

背景:

初来乍到的pythoner,刚开始的时候觉得所有的网站无非就是分析HTML、json数据,但是忽略了很多的一个问题,有很多的网站为了反爬虫,除了需要高可用代理IP地址池外,还需要登录。例如知乎,很多信息都是需要登录以后才能爬取,但是频繁登录后就会出现验证码(有些网站直接就让你输入验证码),这就坑了,毕竟运维同学很辛苦,该反的还得反,那我们怎么办呢?这不说验证码的事儿,你可以自己手动输入验证,或者直接用云打码平台,这里我们介绍一个scrapy的登录用法。

测试登录地址:http://example.webscraping.com/places/default/user/login

测试主页:http://example.webscraping.com/user/profile

1、这里不在叙述如何创建scrapy项目和spider,可以看我前面的博客

2、快速登录方法。

我们在这里做了一个简单的介绍,我们都知道scrapy的基本请求流程是start_request方法遍历start_urls列表,然后make_requests_from_url方法,里面执行Request方法,请求start_urls里面的地址,但是这里我们用的不再是GET方法,而用的是POST方法,也就常说的登录。

1、首先我们改写start_reqeusts方法,直接GET登录页面的HTML信息(有些人说你不是POST登录么,干嘛还GET,别着急,你得先GET到登录页面的登录信息,才知道登录的账户、密码等怎么提交,往哪里提交)

2、start_request方法GET到数据后,用callback参数,执行拿到response后要接下来执行哪个方法,然后在login方法里面写入登录用户名和密码(还是老样子,一定要用dict),然后只用Request子类scrapy.FormRequest这个方法提交数据,这我一个的是FormRequest.from_response方m_法。

有些人会问,这个from__response的基本使用是条用是需要传入一个response对象作为第一个参数,这个方法会从页面中form表单中,帮助用户创建FormRequest对象,最最最最重要的是它会帮你把隐藏的input标签中的信息自动跳入表达,使用这个中方法,我们直接写用户名和密码即可,我们在最后面再介绍传统方法。

3、parse_login方法是提交完表单后callback回调函数指定要执行的方法,为了验证是否成功。这里我们直接在response中搜索Welcome Liu这个字眼就证明登录成功。这个好理解,重点是yield from super().start_resquests(),这个代表着如果一旦登录成功后,就直接带着登录成功后Cookie值,方法start_urls里面的地址。这样的话登录成功后的response可以直接在parse里面写。

1 #-*- coding: utf-8 -*-

2 importscrapy3 from scrapy importFormRequest,Request4

5

6 classExampleLoginSpider(scrapy.Spider):7 name = "login_"

8 allowed_domains = ["example.webscraping.com"]9 start_urls = ['http://example.webscraping.com/user/profile']10 login_url = 'http://example.webscraping.com/places/default/user/login'

11

12 defparse(self, response):13 print(response.text)14

15 defstart_requests(self):16 yield scrapy.Request(self.login_url,callback=self.login)17

18 deflogin(self,response):19 formdata ={20 'email':'liushuo@webscraping.com','password':'12345678'}21 yield FormRequest.from_response(response,formdata=formdata,22 callback=self.parse_login)23 defparse_login(self,response):24 #print('>>>>>>>>'+response.text)

25 if 'Welcome Liu' inresponse.text:26 yield from super().start_requests()

有的同学可能问了,login方法里面不是应该写reture 么,其实上面的写法跟下面的这种写法是一样效果,如果再有个CSRF的话,也可以直接在login里面写拿到CSRF信息,写入到formdata里面跟用户名和密码一起提交。

1 return [FormRequest.from_response(response,formdata=formdata,callback=self.parse_login)]

登录成功

976930-20180105135019331-694152661.png

3、传统登录方法:

1、首先要明确一件事情,一般情况下需要登录的网站,不只需要登录用户和密码,接下来我们聊聊上面说的传统登录模式。用户在登录的时候并不是只需要登录账户信息,除了常见直观的验证码和CSRF信息外,也有可能需要提交其它信息,我们必须把它们都提取到一起提交给服务器。

976930-20180105144556440-557236048.png

2、我们在form表单下面找到了一个display:none的div标签,里面的input标签的value值正好是我们要提交的数据,那我们就提取到他。

976930-20180105145038909-686532283.png

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

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

相关文章

plupload 不兼容ie8_如何处理网站兼容性

点击上方蓝字给一个关注吧 点击上方关注我们!市场上浏览器种类很多,不同浏览器的内核也不尽相同,所以各个浏览器对网页的解析存在一定的差异。浏览器内核主要分为两种,一是渲染引擎,另一个是js引擎,内核…

ASP.NET MVC4.0+EF+LINQ+bui+bootstrap+网站+角色权限管理系统(1)

本系列的的角色权限管理主要采用Dotnet MVC4工程内置的权限管理模块Simplemembership实现,主要有关文件是InitializeSimpleMembershipAttribute.cs和AccountModels.cs 下面是对这两个文件的了解和改造 WebSecurity.InitializeDatabaseConnection("DefaultConne…

浏览器超全网站收藏夹 6000+

网上这种资源的分享特别少大家切珍惜 废话不对说直接上图自己看 分了这么多类你就知道我收藏了多少网站吧? 没错有6000左右,网上这类资源确实少之又少。所以分享了一下 大家可以前往这个地址下载,绝对赚的,很多网站都是自己一个…

百度商桥放在php网站哪里_360算命吸粉推广开户丨神马百度搜狗360开户平台

360算命吸粉推广开户丨神马百度搜狗360开户平台其实关键词分析只要合理,就可以,帐户分类就是为了随时调整和数据分析,关键词分类,也是随时调整的。第三、筛选关键词百度后台会提供关键词,也可以看百度指数。刚刚开始跑…

优化网站加载时间(GTmetrix)

首先,看下页面加载时间轴 1.URL重定向时间(Redirect duration) 包括: Redirect from a non-www to www (eg. example.com to www.example.com)Redirect to a secure URL (eg. http:// to https://)Redirect to set cookiesRedir…

获取roi内的xld_利用SEO 优化实现低成本获取高质量的流量转化

我们知道内容是网站建设的重要基础性资源,但对于一些企业而言,或者集团性的公司,在做任何项目运营的时候,都会非常关注获取高质量的流量转化的问题。 特别是精准的衡量一个内容投资回报率显得格外重要根据以往SEO的工作经验&#…

潮鞋购物网站,html5+css3+js,实现基本的添加购物车,自动计算金额等功能

项目展示效果 实现添加购物鞋数量总金额自动变化 实现连接购物车功能 实现在购物车里收藏与删除 下面是购物页面代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>购买精选</title><sty…

想要那种有提示声音的网站吗?我教你怎么做!

您有新的外卖订单请及时查收&#xff01;熟悉不能再熟悉的声音了&#xff0c;今天小编就做了这样一个网站的提示新订单的功能&#xff0c;接下来就教你怎么玩转这个小功能&#xff01;首先我们前端的代码是这样写的&#xff1a;var playSound function () { var borswer wind…

基于ELK 搭建网站流量可视化监控平台

2019独角兽企业重金招聘Python工程师标准>>> ELK 组成&#xff1a;&#xff1a; 通过上图我们可以看到&#xff0c;ELK 是由三个Elastic 的产品组合而成&#xff0c;分别是ElasticSearch、Logstash 和Kibana。三者之间是的部署关系如下图所示&#xff1a; Logstash …

不修改代码就能优化ASP.NET网站性能的一些方法

本文将介绍一些方法用于优化ASP.NET网站性能&#xff0c;这些方法都是不需要修改程序代码的。 它们主要分为二个方面&#xff1a; 1. 利用ASP.NET自身的扩展性进行优化。 2. 优化IIS设置。 配置OutputCache 用缓存来优化网站性能的方法&#xff0c;估计是无人不知的。 ASP.NET…

通过建站学运维1901-09任务

4.21LNMP环境介绍 什么是LNMP Linux NginxMySQL/MariadbPHP Linux就是操作系统 Nginx 是一个web服务器&#xff0c;提供HTTP服务的。之所以能够访问网站就是Nginx在起作用。 Nginx的功能&#xff1a; 接收用户请求&#xff0c;处理图片、js、css等静态请求。接收但不处理php请求…

【Web】Bootstrap框架实现简单旅游网站页面

这里主要是为了熟悉以下Bootstrap框架的简单使用&#xff0c;采用了响应式布局。 代码如下&#xff1a; <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"utf-8"><meta http-equiv"X-UA-Compatible" conte…

4.Nginx静态网站部署

Nginx是一个HTTP的web服务器&#xff0c;可以将服务器上的静态文件&#xff08;如HTML、图片等&#xff09;通过HTTP协议返回给浏览器客户端。 一、项目实例 1.进入opt目录下&#xff0c;新建static目录 2.通过Xftp将ace-master到linux服务器/opt/static目录下 为了让后面的配…

Apache下通过shell脚本提交网站404死链

网站运营人员对于死链这个概念一定不陌生&#xff0c;网站的一些数据删除或页面改版等都容易制造死链&#xff0c;影响用户体验不说&#xff0c;过多的死链还会影响到网站的整体权重或排名。 百度站长平台提供的死链提交工具,可将网站存在的死链(协议死链、404页面)进行提交,可…

Django的安装使用,以及建立本地网站

一、安装Django pip install django 完成后即可 二、pycharm 建立django 点击file ——>new project 选择django项目——>more setting填写appname 生成以下项目结构 -views.py中处理视图逻辑&#xff0c;一般为大量函数方法。一般被urls处理调用&#xff0c;收到请求&am…

看透 Spring MVC 源代码分析与实践 —— 网站基础知识

网站架构及其演变过程友情提示&#xff1a;欢迎关注公众号【芋道源码】。?关注后&#xff0c;拉你进【源码圈】微信群讨论技术和源码。友情提示&#xff1a;欢迎关注公众号【芋道源码】。?关注后&#xff0c;拉你进【源码圈】微信群讨论技术和源码。友情提示&#xff1a;欢迎…

某政府网站信息文章标题、链接、刊布时间等信息获取

目录一、需求信息二、过程感触三、实战code一、需求信息 需要信息&#xff1a; 每个内容下开篇的索引号、发布机构、组配分类、标题、发布时间和链接地址&#xff0c;部分实例如下图&#xff1a; 上图中左侧的目录结构对应的刊布信息中的如下信息&#xff1a; 题外话&#x…

大型分布式网站术语分析 15 条,你知道几条?

点击上方“芋道源码”&#xff0c;选择“置顶公众号”技术文章第一时间送达&#xff01;源码精品专栏 精尽 Dubbo 原理与源码专栏( 已经完成 69 篇&#xff0c;预计总共 75 篇 )中文详细注释的开源项目Java 并发源码合集RocketMQ 源码合集Sharding-JDBC 源码解析合集Spring MVC…

几个大型网站的Feeds(Timeline)设计简单对比

点击上方“芋道源码”&#xff0c;选择“置顶公众号”技术文章第一时间送达&#xff01;源码精品专栏 精尽 Dubbo 原理与源码专栏( 已经完成 69 篇&#xff0c;预计总共 75 篇 )中文详细注释的开源项目Java 并发源码合集RocketMQ 源码合集Sharding-JDBC 源码解析合集Spring MVC…

基于LAMP环境发布一个Discuz论坛网站

一、LAMP是什么 1、LAMP是常见的Web服务器环境解决方案&#xff0c;用于创建和管理Web应用程序的开源开发平台。Linux用作后端操作系统&#xff0c;Apache是​​Web服务器&#xff0c;MySQL是数据库&#xff0c;PHP是脚本语言。 2、LAMP 为 Linux、Apache、MySQL、PHP 的简称…