python模拟登录网站_用python模拟登录网站获取cookies(urllib与requests)

news/2024/5/9 22:47:49/文章来源:https://blog.csdn.net/weixin_39631899/article/details/110041487

最近在学习使用python爬取网页信息,之前也写了几篇网站爬取以及图文混排爬取到word中的例子,有兴趣的可以在本站搜索python。之前大部分是不需要登录就可以访问的资源,所以使用python爬取的时候不需要登录。但是有些网站的信息(比如论坛)必须要登录用户才能访问,使用常规的python方法就无法获取到了。对于这种需要登录才能获取内容的网站,目前接触到两种方法,第一种是使用 Selenium库来调用浏览器 (chrome或firefox浏览器),模拟真实的用户操作浏览器来获取数据;另一种方法就是使用 模拟登录来获取并保存cookies,并且能实现获取目标url时携带cookies进行身份验证。本文仅介绍第二种方法,部分代码来自网络基于2.x版本修改,如果你使用的时python2.x版本可以尝试修改下再使用。

源码一、python3.7+cookiejar+urllib模拟登录人人获取cookies

#encoding=utf-8

#import urllib2 #ModuleNotFoundError: No module named 'urllib2'

import urllib.request

import urllib

#import cookielib #ModuleNotFoundError: No module named 'cookielib'

import http.cookiejar

def renrenBrower(url,user,password):

#登陆页面,可以通过抓包工具分析获得,如fiddler,wireshark

#login_page用户名及密码post提交的目标url,也可以用网页打开登录地址F12查看form表单的action地址,或netwrok里面查看提交地址

login_page = "http://www.renren.com/PLogin.do"

try:

# 创建cookiejar实例对象

#cookie = http.cookiejar.CookieJar()

cookie = http.cookiejar.MozillaCookieJar("cookie.txt") #这个用于保存cookies

#cookie = cookiejar.MozillaCookieJar() #读取cookies

#cookie.load("cookie.txt")

print(cookie)

#

# 创建管理器

cookie_handler = urllib.request.HTTPCookieProcessor(cookie)

http_handler = urllib.request.HTTPHandler()

https_handler = urllib.request.HTTPSHandler()

# 创建请求求管理器

opener = urllib.request.build_opener(cookie_handler, http_handler, https_handler)

#获得一个cookieJar实例

#cj = cookielib.CookieJar()

#cj = http.cookiejar.CookieJar()

#cookieJar作为参数,获得一个opener的实例

#opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))

#opener=urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj))

#伪装成一个正常的浏览器,避免有些web服务器拒绝访问。

opener.addheaders = [('User-agent','Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)')]

#生成Post数据,含有登陆用户名密码。

#data = urllib.urlencode({"email":user,"password":password})

#urllib.parse.urlencode(query, doseq=False, safe='', encoding=None, errors=None, quote_via=quote_plus)

data = urllib.parse.urlencode({"email":user,"password":password}).encode('utf-8') # 提交类型不能为str,需要为byte类型

# email 及password 是表单的名字浏览器F12里面查看,另外有些站点需要提交csrf隐藏表单

#以post的方法访问登陆页面,访问之后cookieJar会自定保存cookie

opener.open(login_page,data)

#以带cookie的方式访问页面

op=opener.open(url)

print(cookie)

cookie.save()

#读取页面源码

data= op.read().decode("UTF-8")

return data

except Exception as e:

print(str(e))

#访问某用户的个人主页,其实这已经实现了人人网的签到功能。

#result = renrenBrower("http://www.renren.com/home","用户名","密码")

#

#我们想要获取登录后的http://www.renren.com/309365594/profile?v=info_timeline页面的内容

result = renrenBrower("http://www.renren.com/309365594/profile?v=info_timeline","xxxx@163.com","mima123446")

print(result)

正常使用中还需进一步对返回的结果页面进行处理,这里就不介绍了,可以在本站搜索python查看之前的教程结合使用。

源码二、python3.7+requests模拟登录人人获取cookies

#encoding=utf-8

import requests

def renrenBrower(url,user,password):

#登陆页面,可以通过抓包工具分析获得,如fiddler,wireshark

#login_page用户名及密码post提交的目标url,也可以用网页打开登录地址F12查看form表单的action地址,或netwrok里面查看提交地址

login_page = "http://www.renren.com/PLogin.do"

try:

# 创建Session对象

# requests库的session对象会在同一个session实例的所有请求之间使用cookies保持登录状态

session = requests.Session()

#伪装成一个正常的浏览器,避免有些web服务器拒绝访问。

headers = {'User-agent':'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)'}

#headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36 QIHU 360SE'}

#在session中发送登录请求,此后这个session里就存储了cookie

#可以用print(session.cookies.get_dict())查看

resp = session.post(login_page,{"email":user,"password":password})#post提交表单数据到登录地址

# email 及password 是表单的名字浏览器F12里面查看,另外有些站点需要提交csrf隐藏表单

resp = session.get(url,headers=headers)#携带cookies 以get方式访问目标url

data = resp.content.decode('UTF-8')

print(session.cookies.get_dict())

return data

except Exception as e:

print(str(e))

#访问某用户的个人主页,其实这已经实现了人人网的签到功能。

#result = renrenBrower("http://www.renren.com/home","用户名","密码")

#我们想要获取登录后的http://www.renren.com/309365594/profile?v=info_timeline页面的内容

result = renrenBrower("http://www.renren.com/309365594/profile?v=info_timeline","xxxx@163.com","mima123446")

print(result)

总体而言使用requests还是比较方便的,推荐使用这种方法!

基于互联网精神,在注明出处的前提下本站文章可自由转载!

本文链接:https://ranjuan.cn/python-login-getcookies/

赞赏

55ac090277752325d84d0f2e150b06e9.png微信赞赏9dd924bfc88ff48b90dba6619edaf169.png支付宝赞赏

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

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

相关文章

网站留言板防重复留言_如何做一个2000年风格复古的个人网站(1)开发环境准备...

先说一下什么是复古的个人网站?让我们把时钟拨回到2000年。就是PC网络开始流程的2000-2005年代。在那个年代,大型网站有刚刚建立起的三大门户网站:网易、新浪、搜狐。还有电子邮箱http://163.net,中华网,E堂等&#xf…

用html5做一个介绍自己家乡的页面_想做响应式网站,如何选一家靠谱的响应式网站开发公司?...

响应式网站在聊响应式网站建设哪家好这个话题之前,我们先要了解一下响应式网站设计开发的起源、什么是响应式网站设计、响应式网站建设的现状和前景、如何设计制作HTML5响应式网站以及响应式网站建设费用,最后就能得出响应式网站建设哪家好的结论了。HTM…

网站维护页面_选择网站建设公司应该注意什么?

近期有不少客户咨询我们时都问了同样的问题:“南京网站建设这块真的好复杂,什么价格都有,从几百到几万,到底应该怎么选择网站建设公司呢?”其实从价格角度来说,我们在《建设一个企业网站需要多少钱呢&#…

MD毛豆新发现建站总结2014年8月20_彭世瑜_新浪博客

2014年8月7日,一个偶然的想法,我就开始做了一个存放一些从某个论坛获取的实用网址的网页,只是想给自己做一个简单的网址记录点。将网页保存至本地,做一个“本地导航”。做啊做,根本停不下来,到现在30分钟前…

MD毛豆新发现建站总结2014年8月20

2014年8月7日,一个偶然的想法,我就开始做了一个存放一些从某个论坛获取的实用网址的网页,只是想给自己做一个简单的网址记录点。将网页保存至本地,做一个“本地导航”。做啊做,根本停不下来,到现在30分钟前…

网站中案例怎么用html写,20个案例教你如何在网页中使用纹理图案

虽然扁平化的风格和响应式设计的流行使得网页设计中纹理的使用率有所降低,但是总的来说,要让一个网站拥有质感最直接的方式就是使用合适的纹理。纹理是网页设计中最常见也最常用的元素,在不同的网页中,纹理有时候是能够化腐朽为神…

上传的图片所在文件夹一般在那个目录下_网站一级目录的制作方法

搜索引擎优化(SEO)的方法之一是在主站点中建立一个主目录,从而提高主站点的排名。第一级目录继承自主站点目录,相当于在网站根目录下创建一个文件夹来存储网站。下面和大家分享网站一级目录的制作方法。图片源自网络一、网站一级目…

seo日常工作表_SEO的日常工作范畴。

做网站优化要求持之以恒,由此看来日常优化工作就显得格外重要了。就现在很多SEOer的工作日志来看,讲到日常优化工作想必单是外链的制作和内容的更新。在笔者看来,这只是日常工作之一而已。那么,还有那些工作属于日常优化工作的范畴…

url 地址参数多 404_网站建设:站内URL配置,基础手册!

当我们在做网站建设的时候,经常有小伙伴会问:网站的URL展现形态真的很重要吗? 蝙蝠侠IT认为:这个问题真的很重要,它主要涉及网站的抓取、收录、排名,因此当你试图建立一个新网站的时候,我们有必…

wordpress建立php站点地图,WordPress代码实现网站地图sitemap的html和xml的方法

首先,我还是承认了吧,教程是从奶嘴那弄来的,为的也是方便自己,顺带方便下浏览用户们!今天介绍的就是不使用插件完成WordPress代码实现网站地图sitemap的html和xml的方法,本站以前一直用着柳城的百度地图插件…

antd编写出来的网页转html,AntdSite - 一个基于React.Js的静态网站生成器

前言简介Antdsite 是一个基于 React.js 的静态网站生成器。使用 Ant Design设计构建, 并且它的配置项借鉴了Vuepress由来以前我是docz, docusaurus . 但是试用了下,感觉都不如 vuepree 顺手。后来,我访问Ant Design官网的时候突然冒出来一个想…

计算机组成原理中断控制器,中断控制器8259-计算机组成原理与汇编语言-电子发烧友网站...

5.2.3 中断控制器8259弄清芯片外部引线以便将它们连接到系统中;了解它们的工作方式和工作特点,以便有选择地应用它们的某些工作方式;理解芯片内部的控制字、命令字,以便对它们进行编程;了解每块芯片所占的地址&#xf…

Python编程:socket实现简单的网站服务器

通过:127.0.0.1:8000 来访问 发送字符串 # 用socket实现一个简单的服务器,可以通过浏览器来访问import socketdef handle(conn): # 请求处理函数data conn.recv(1024)print(data)conn.send(bytes("HTTP/1.1 200 OK\r\n\r\n",encoding"…

整合营销系统推荐乐云seo_整合营销是什么意思 整合营销的特点

【整合营销】整合营销是什么意思 整合营销的特点整合营销的特点①在整合营销传播中,消费者处于核心地位。②对消费者深刻全面地了解,是以建立资料库为基础的。③整合营销传播的核心工作是培养真正的"消费者价值"观,与那些最有价值的…

服务器知识网站,分享5个服务器的知识点

企业常常在租用服务器时面对一堆的服务器配置数据感到无所适从,配置中的数据是什么意思,能够为我的需求提供何种帮助,这都是企业在租用服务器时考虑的问题。今天以问答的方式为大家解读一下:1 双路等于双核么?答案:不是无论服务器…

我的家乡html网页设计,创作一个以“我的家乡”为主题的网站

任务流程第一步明确任务目标第二步明确任务内容第三步根据辅导资料完成相应学习第四步完成任务第五步复习(任务/课程)任务目标创作一个以“我的家乡”为主题的网站,首页命名为“index.html”,保存到网站根目录下,其他子页(至少5个)以对应内容拼音命名&am…

支持html5的视频网站吗,检测浏览器是否支持html5视频的代码

在http://www.w3school.com.cn学习html5的时候,看到一个检测您的浏览器是否支持 html5 视频的方法:运行效果:1.在editplus中运行2.在chrome浏览器中运行代码部分:复制代码代码如下:function checkvideo(){if(!!document.createele…

18个常用的网站性能测试工具

网站的加载速度是决定网站等级的重要因素,值得站长特别关注。原因很简单,没有人愿意为了打开一个网页而等老半天,换句话说,如果你的网站打开速度 很慢,将流失大量的访客,甚至出现多米诺效应的不良影响。在埋…

18个常用的网站性能测试工具

网站的加载速度是决定网站等级的重要因素,值得站长特别关注。原因很简单,没有人愿意为了打开一个网页而等老半天,换句话说,如果你的网站打开速度 很慢,将流失大量的访客,甚至出现多米诺效应的不良影响。在埋…

分享:ThinkPHP和Webpack前后端结合构建SEO多页应用的一个思路

有时候遇到的需求是这样的: 部分页面,如详情页,需要做SEO优化,而部分页面需要实现复杂的交互,如用户后台,可发布信息。 之前采用过一次,Nuxt.js 等前后端同构的方案。 优点就是一套js代码&…