python爬虫登录网站_Python网络爬虫之模拟登陆

news/2024/5/9 11:27:54/文章来源:https://blog.csdn.net/weixin_39875941/article/details/109878457

原标题:Python网络爬虫之模拟登陆

f388fe8251b54498a82856b5c1d9adf3.jpeg

为什么要模拟登陆?

Python网络爬虫应用十分广泛,但是有些网页需要用户登陆后才能获取到信息,所以我们的爬虫需要模拟用户的登陆行为,在登陆以后保存登陆信息,以便浏览该页面下的其他页面。

保存用户信息

模拟登陆后有两种方法可以保存用户信息,通过Session来保存登陆信息或者通过Cookie来保存登陆信息

一、Session的用法

# 导入requests模块

import requests

# 通过requests的Session来请求网页

s = requests.Session

r = s.post(url, headers=headers)

二、Cookie的用法

import urllib.request, http.cookiejar

# 初始化Cookie

cookie = http.cookiejar.CookieJar

opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cookie))

# 把opener配置为全局 当然也可以不配置全局通过opener来请求网页

urllib.request.install_opener(opener)

模拟登陆实践

我们以豆瓣网为例模拟用户登陆,然后爬取登陆后的用户界面

(1)找到请求表单

登陆一般是通过Post请求来实现的,其传递参数为一个表单,如果要成功登陆,我们需要查看该表单传递了哪些内容,然后构造表单做Post请求。怎么获取表单了,我们只需要打开浏览器右键查看,然后输入账号密码,点击登陆查看其NetWork中的请求,找到表单信息即可(推荐使用谷歌浏览器),该信息中还能找到请求的url。

表单信息

25d9917db10b48719b4856bbdda68b67.jpeg

URL

85907bcf73b0403f9da370b2da85ded3.jpeg

(2)构建表单

表单的key值我们可以通过右键页面检查页面源代码,在页面源码中获得静态的值(还有些动态信息需要手动获取)

formdata = {

'redir': 'https://www.douban.com',

'form_email': '账号',

'form_password': '密码',

'login': u'登陆'

}

(3)伪装成浏览器进行登录

我们只需要给请求添加上Headers即可

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) '

'Chrome/55.0.2883.87 Safari/537.36'}

(4)获取验证码

第二步的表单其实还不完整,还差两条跟验证码有关的信息,这两条信息是动态变化的,所以我们要手动获取

r = s.post(url_login, headers=headers)

content = r.text

soup = BeautifulSoup(content, 'html.parser')

captcha = soup.find('img', id='captcha_image')#当登陆需要验证码的时候

if captcha:

captcha_url = captcha['src']

re_captcha_id = r'

captcha_id = re.findall(re_captcha_id, content)

print(captcha_id)

print(captcha_url) # 打印验证码url

captcha_text = input('Please input the captcha:') # 手动输入验证码

formdata['captcha-solution'] = captcha_text # 添加表单信息

formdata['captcha-id'] = captcha_id

(5)登录

r = s.post(url_login, data=formdata, headers=headers) # 将表单信息传入参数中请求页面即可登录

完整代码

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

import requests

import re

from bs4 import BeautifulSoup

s = requests.Session

url_login = 'https://accounts.douban.com/login'

formdata = {

'redir': 'https://www.douban.com',

'form_email': '账号',

'form_password': '密码',

'login': u'登陆'

}

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) '

'Chrome/55.0.2883.87 Safari/537.36'}

r = s.post(url_login, data=formdata, headers=headers)

content = r.text

soup = BeautifulSoup(content, 'html.parser')

captcha = soup.find('img', id='captcha_image')#当登陆需要验证码的时候

if captcha:

captcha_url = captcha['src']

re_captcha_id = r'

captcha_id = re.findall(re_captcha_id, content)

print(captcha_id)

print(captcha_url)

captcha_text = input('Please input the captcha:')

formdata['captcha-solution'] = captcha_text

formdata['captcha-id'] = captcha_id

r = s.post(url_login, data=formdata, headers=headers)

with open('contacts.html', 'w+', encoding='utf-8') as f:

f.write(r.text)

运行结果

登陆成功

017f9788152e436bb0451ffe25ab1e64.jpeg

最后,如果你跟我一样都喜欢python,想成为一名优秀的程序员,也在学习python的道路上奔跑,欢迎你加入python学习qun:839383 765 群内每天都会分享最新业内资料,分享python免费课程,共同交流学习,让学习变(编)成(程)一种习惯!返回搜狐,查看更多

责任编辑:

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

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

相关文章

微软网站为什么那么慢_为什么现在那么多公司选择响应式网站建设

为什么要选择响应式网站建设呢? 随着现在手机等移动设备的快速发展,一些传统式的网站早就已经没办法满足我们现在的需求,因此现在更加流行响应式网站建设。那么,响应式网站有什么优势呢?为什么现在越来越多的人选择响应…

group by 效率_这29个实用网站,能帮资深设计师提升效率和效果

这篇总结来自资深设计师Danny Sapio,他根据自己的工作经验总结了下面29个实用的设计网站和工具~其实如果你想要获取设计素材,这个时代是最不缺这些东西。网络上充斥着各种工具、插件、网站、资源,还有各种优化流程的文章,帮你成为…

动态网站的技术路线_网站排名在首位后,为什么还要继续做SEO?

做网站优化是一件需要长期做的工作,很多网站在取得了一定的高排名后还会依然坚持做SEO,下面我们就一起来分析一下为什么网站上了首页还要继续做SEO?一、SEO搜索结果是实时更新的互联网每分每秒都在发生着变化,随着时间、地点、访问…

网站演化整理

2019独角兽企业重金招聘Python工程师标准>>> 目的:高可用,高性能,可扩展。 1.单机时代 2.缓存出现 3.数据服务与应用分离 4.数据库读写分离 5.应用服务集群 6.集中式缓存,session集中缓存 7.动静分离 8.反向代理&#…

网站部署到服务器模板,Janus WebRTC服务器部署

第一步:安装janus依赖库和工具,并设置环境变量apt install git aptitudeaptitude install libmicrohttpd-dev libjansson-dev libssl-dev libcurl4-openssl-devaptitude install libsofia-sip-ua-dev libglib2.0-dev libopus-dev libogg-dev libsrtp-dev…

html mouseover css,图文详解鼠标事件CSS:hover和JS:mouseover的区别

在工作中为了使页面更具有吸引力,前端开发人员经常会在页面中加上鼠标移入和移出的效果。鼠标移入移出的设置,一般有两种方法,一种是单纯用CSS中的hover伪类,另一种可以用JS 中的DOM事件,即onmouseover和onmouseout。接…

五大步骤快速搭建个人网站

导语现在作为一个IT程序猿,没有一个自己的个人网站怎么行呢,现在就连许多不是IT人员都会搭建自己的个人网站 。那作为一个IT人员,如果别人让你帮忙搭建一下网站,然而你却没玩过,说不会,岂不是很尴尬 。另外…

碎片化学习,这些网站必不可少!

慕课网非常棒,因为它算是在线教育的“鼻祖”了,并且它的课程种类非常多,里面大牛也很多,值得推荐。猿团,也是一个非常不错的在线教育网站,课程也都是免费的,有很多非常不错的技术视频&#xff0…

推荐几个知名顶级的文献网站

点击上方“程序IT圈”,选择“置顶公众号”关键时刻,第一时间送达!有人在后台给我留言,让我推荐几个查找文献的网站,周末特别花了点时间整理了一下。在这里推荐给大家,希望对大家有帮助!本文总共…

TestCase--网站登录模块

以京东的登录页面为例 测试用例设计如下: 一、功能测试 1. 什么都不输入,点击登录按钮,系统是否给出提示2. 输入正确的用户名和密码,点击登录按钮,验证是否能正确登录3. 输入错误的用户名、正确的密码, 验证是否登录会…

使用WordPress搭建个人网站(文末福利)

程序IT圈学习编程技术,关注这个公众号足够了前几天阿里云的低价的99元/年云服务器,你是不是已经购买了,很多人购买了,不知道有没有用上呢,今天专门写篇关于WordPress搭建网站的博客,希望能帮助到你&#xf…

(赠书)推荐个程序猿学习博客网站

点击上方“程序IT圈”,选择“置顶公众号”关键时刻,第一时间送达!大家好,2018年4月15号默默的开通了个在线学习博客网站『程序猿圈』,目前经过了一个月的努力,终于沉淀了一些对于大家有价值的内容了&#x…

推荐程序员收藏的几个技术社区以及工具网站

我们的态度是:每天进步一点点,理想终会被实现。1前言作为程序猿要想成长快,进阶快,弯道超车必然付出的肯定不能比一般人多,别人在逛淘宝、天猫的时候我们逛的却是各大技术社区;那你经常逛的技术社区有哪些呢…

常见的网站攻击方式和防护方式

第一种:DOS攻击 攻击描述:通过协议方式,或抓住系统漏洞,集中对目标进行网络攻击,让目标计算机或网络无法提供正常的服务或资源访问,使目标系统服务系统停止响应甚至崩溃。例如疯狂Ping攻击,泪滴…

网站优化

概要 标签提供关于HTML文档的元数据。元数据不会显示在页面上,但是对于机器是可读的。它可用于浏览器(如何显示内容或重新加载页面),搜索引擎(关键词),或其他 web 服务。 —— W3School 必要属性…

这个技术网站,恢复更新了!

点击上方“程序IT圈”,选择“置顶公众号”关键时刻,第一时间送达!大家好,还记得我之前开通了个在线学习博客网站『程序猿圈』,目前网站已经沉淀了一些对于大家有价值的内容了,已经更新了差不多100多篇干货文…

ubuntu 设置静态路由_腾讯静态网站托管平台使用指南

GitHub Pages 部署和访问速度极慢,并且如果不使用 CDN 或主动提交,国内搜索引擎无法爬取相关内容。在寻找替代品的过程中,我尝试了腾讯云的「静态网站托管平台」,自觉体验良好,价格也比较合理,对于简单的静…

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

点击上方 蓝字字体 加关注吧作者:大熊先生原文:http://www.cnblogs.com/Creator/p/3776110.html作为最流行的开源数据库,MySQL被广泛应用在Web应用程序以及其它中小型项目上。然而不可忽视的是,在许多大型IT公司中,MyS…

asp的网站能封装成app吗_网页端封装生成app移动端,是开发者的热门趋势

随着智能手机的性能不断提高,人们对app的追求也越来越多,社交、支付、购物等,app开发行业逐渐热了起来。很多企业都需要借助APP软件的热潮来经营业务,有时候为了不浪费太多时间就会考虑使用app封装平台来进行制作app,成…

云服务器 ECS 建站教程:搭建WordPress网站

搭建 WordPress 网站WordPress 是一款常用的搭建个人博客网站的软件。使用阿里云的云服务器 ECS,您可以方便地搭建 WordPress,发布个人博客。 此外,将来随着业务的扩展,您可以利用阿里云强大的产品平台,横向和纵向扩展…