如何用 Python 爬取需要登录的网站?

news/2024/5/14 5:51:42/文章来源:https://blog.csdn.net/weixin_34278190/article/details/89654908

最近我必须执行一项从一个需要登录的网站上爬取一些网页的操作。它没有我想象中那么简单,因此我决定为它写一个辅助教程。

在本教程中,我们将从我们的bitbucket账户中爬取一个项目列表。

教程中的代码可以从我的 Github 中找到。

我们将会按照以下步骤进行:

  • 提取登录需要的详细信息

  • 执行站点登录

  • 爬取所需要的数据

在本教程中,我使用了以下包(可以在 requirements.txt 中找到):

requests

lxml

步骤一:研究该网站

打开登录页面

进入以下页面 “bitbucket.org/account/signin”。你会看到如下图所示的页面(执行注销,以防你已经登录)

如何用 Python 爬取需要登录的网站?

如果你在学习Python的过程中遇见了很多疑问和难题,可以加-q-u-n   227 -435-450里面有软件视频资料免费

仔细研究那些我们需要提取的详细信息,以供登录之用

在这一部分,我们会创建一个字典来保存执行登录的详细信息:

1. 右击 “Username or email” 字段,选择“查看元素”。我们将使用 “name” 属性为 “username” 的输入框的值。“username”将会是 key 值,我们的用户名/电子邮箱就是对应的 value 值(在其他的网站上这些 key 值可能是 “email”,“ user_name”,“ login”,等等)。

如何用 Python 爬取需要登录的网站?

如何用 Python 爬取需要登录的网站?

2. 右击 “Password” 字段,选择“查看元素”。在脚本中我们需要使用 “name” 属性为 “password” 的输入框的值。“password” 将是字典的 key 值,我们输入的密码将是对应的 value 值(在其他网站key值可能是 “userpassword”,“loginpassword”,“pwd”,等等)。

如何用 Python 爬取需要登录的网站?

如何用 Python 爬取需要登录的网站?

3. 在源代码页面中,查找一个名为 “csrfmiddlewaretoken” 的隐藏输入标签。“csrfmiddlewaretoken” 将是 key 值,而对应的 value 值将是这个隐藏的输入值(在其他网站上这个 value 值可能是一个名为 “csrftoken”,“ authenticationtoken” 的隐藏输入值)。列如:“Vy00PE3Ra6aISwKBrPn72SFml00IcUV8”。

如何用 Python 爬取需要登录的网站?

如何用 Python 爬取需要登录的网站?

最后我们将会得到一个类似这样的字典:

payload = {

"username": "<USER NAME>",

"password": "<PASSWORD>",

"csrfmiddlewaretoken": "<CSRF_TOKEN>"

}

请记住,这是这个网站的一个具体案例。虽然这个登录表单很简单,但其他网站可能需要我们检查浏览器的请求日志,并找到登录步骤中应该使用的相关的 key 值和 value 值。

步骤2:执行登录网站

对于这个脚本,我们只需要导入如下内容:

import requests

from lxml import html

首先,我们要创建 session 对象。这个对象会允许我们保存所有的登录会话请求。

session_requests = requests.session()

第二,我们要从该网页上提取在登录时所使用的 csrf 标记。在这个例子中,我们使用的是 lxml 和 xpath 来提取,我们也可以使用正则表达式或者其他的一些方法来提取这些数据。

login_url = "https://bitbucket.org/account/signin/?next=/"

result = session_requests.get(login_url)

tree = html.fromstring(result.text)

authenticity_token = list(set(tree.xpath("//input[@name='csrfmiddlewaretoken']/@value")))[0]

**更多关于xpath 和lxml的信息可以在这里找到。

接下来,我们要执行登录阶段。在这一阶段,我们发送一个 POST 请求给登录的 url。我们使用前面步骤中创建的 payload 作为 data 。也可以为该请求使用一个标题并在该标题中给这个相同的 url 添加一个参照键。

result = session_requests.post(

login_url,

data = payload,

headers = dict(referer=login_url)

)

步骤三:爬取内容

现在,我们已经登录成功了,我们将从 bitbucket dashboard 页面上执行真正的爬取操作。

url = 'https://bitbucket.org/dashboard/overview'

result = session_requests.get(

url,

headers = dict(referer = url)

)

为了测试以上内容,我们从 bitbucket dashboard 页面上爬取了项目列表。我们将再次使用 xpath 来查找目标元素,清除新行中的文本和空格并打印出结果。如果一切都运行 OK,输出结果应该是你 bitbucket 账户中的 buckets / project 列表。

tree = html.fromstring(result.content)

bucket_elems = tree.findall(".//span[@class='repo-name']/")

bucket_names = [bucket.text_content.replace("n", "").strip() for bucket inbucket_elems]

print bucket_names

你也可以通过检查从每个请求返回的状态代码来验证这些请求结果。它不会总是能让你知道登录阶段是否是成功的,但是可以用来作为一个验证指标。

例如:

result.ok # 会告诉我们最后一次请求是否成功

result.status_code # 会返回给我们最后一次请求的状态

就是这样。

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

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

相关文章

难怪你做事每次都比别人快,原来用了这黑科技网站,请低调收藏!

1. 别样网经常有人因为盗图而被告&#xff0c;在这里是不存在的&#xff0c;精彩纷呈的图片海量随你挑选&#xff0c;而且里面的图片像素非常的高。2. Owllook非常强大的电子书资源搜索网站&#xff0c;而且里面的小说是免费的&#xff0c;页面整洁无广告。基本上你搜的小说它都…

8个优质的编程学习网站

上周整理了一篇Python学习资料总结&#xff0c;看到有很多小伙伴都发来私信说感谢&#xff0c;真的觉得很开心啊&#xff0c;只希望帮到了大家&#xff01;有小伙伴就问有没有什么IT学习网站推荐的&#xff0c;其实啊&#xff0c;我也正想整理一篇关于IT学习网站的总结呢&#…

php+mysql网站开发全程实例 于荷云 pdf_《PHP 7 0+MySQL网站开发全程实例》于荷云著【摘要 书评 在线阅读】-苏宁易购图书...

商品参数作者&#xff1a;于荷云著出版社&#xff1a;清华大学出版社出版时间&#xff1a;2018-06-01版次&#xff1a;1开本&#xff1a;16开装帧&#xff1a;平装ISBN&#xff1a;9787302503170版权提供&#xff1a;清华大学出版社基本信息书名:PHP 7 0MySQL网站开发全程实例定…

《一课一练》开同名网站变身网上游戏

10多年来&#xff0c;上海的中小学生没有不知道《一课一练》的。据粗略统计&#xff0c;在校学生约80%拥有《一课一练》。华东师大版的《一课一练》实际上成为教辅读物的知名品牌。面对每年约5千万元码洋的销售量&#xff0c;华东师大出版社社长朱杰人和他的同仁深感责任重大&a…

用VS2008开发Ajax网站需要注意的一些事项

这两天因为要开始网站&#xff0c;我们的老大说了&#xff0c;一定要用到mvc架构三层模式的设计&#xff0c;另外关于ajax的的使用部分不得少于三分之一&#xff0c;这样的要求还真的是很奇怪&#xff0c;感觉就不太像是可以用于商业的东西&#xff0c;大概只是想让我们练习一下…

中小型网站如何防范CC

大公司就不说了&#xff0c;付费CDN&#xff0c;防火墙&#xff0c;大流量&#xff0c;一般也会配置专门的安全问题响应团队。今天侧重讨论一下中小型网站如何&#xff08;优雅&#xff09;防范CC***。先说说一般的中小站点安全问题通病&#xff1a;对安全问题不重视&#xff0…

专业版网站死链接清理软件 egrity Pro for macv8.3.13激活版推荐

专业版网站死链接清理软件推荐——egrity Pro for macv8.3.13激活版可以检查整个网站&#xff0c;以便识别不再起作用的链接。Integrity Pro for mac官方介绍系统要求&#xff1a;需要Mac OS 10.8或更高版本&#xff0c;Intel 64位。在网站上工作时&#xff0c;人们往往会移动甚…

我记录网站综合系统 -- 技术原理解析[3:我记录框架处理流程]

要分析我记录的整个处理流程&#xff0c;先从wojilu的初始化入口&#xff0c;看看wojilu在初始化的时候到底做了些什么事情。 相关代码&#xff1a;wojilu.Web\Global.asax 1 voidApplication_Start( objectsender, EventArgs e ) {2 wojilu.Web.SystemInfo.Init();3 wojilu.We…

艾伟_转载:VS 2010 和 .NET 4.0 系列之《ASP.NET 4 中的SEO改进 》篇

本系列文章导航VS 2010 和 .NET 4.0 系列之《ASP.NET 4 中的SEO改进 》篇VS 2010 和 .NET 4.0 系列之《干净的Web.Config文件 》篇VS 2010 和 .NET 4.0 系列之《起始项目模板》篇VS 2010 和 .NET 4.0 系列之《多定向支持》篇VS 2010 和 .NET 4.0 系列之《多显示器支持》篇VS 20…

20 超棒的 Photoshop 网站布局设计教程

Photoshop 网页设计的教程是很大的资源&#xff0c;是网页设计快速简便的方法之一。作为一个良好的开端&#xff0c;我们应该善于学习他人在网页设计领域的理解。在这个原则的基础上&#xff0c;你可以参考以下教程&#xff0c;学习Photoshop的新技术和战术的使用。 设计一个产…

linux版_纯小白搭建WordPress个人博客网站全面教程(Linux版)

原文链接&#xff1a;纯小白搭建WordPress个人博客网站全面教程&#xff08;Linux版&#xff09;作者&#xff1a;筱某佳本文面对所有建站新手&#xff0c;如果你对于建立个人站点无从下手&#xff0c;那么本文将会给你很大的帮助。本系列分为Windows版本和linux版本&#xff0…

大型游戏网站源码_自学Python才几天,就成功编写出俄罗斯方块游戏,难道是天才?...

人们常说&#xff0c;python不适合做游戏&#xff0c;但我偏爱玩游戏&#xff0c;做不了大的&#xff0c;做个小的也行啊。于是&#xff0c;我在自己毫无基础的条件下&#xff0c;用两天时间学python基础理论&#xff0c;再用已有的俄罗斯方块游戏源码和源文件&#xff0c;在我…

化工网站开发_宁夏、内蒙古、甘肃等西部地区鼓励类化工产业项目

点击上方蓝字&#xff0c;关注农药资讯网国家发展改革委门户网站8月12日消息&#xff0c;国家发改委会同有关部门对《西部地区鼓励类产业目录(2014年本)》进行了修订&#xff0c;形成了《西部地区鼓励类产业目录(2020年本&#xff0c;征求意见稿)》&#xff0c;现向社会公开征求…

mapinfo在线地图插件_推荐几个在线工具导航网站,有上万个工具,满足你生活工作需要...

随着网络带宽加速&#xff0c;现在越来越多的工具开始搬到网上&#xff0c;工具在线云服务是一种发展趋势&#xff0c;未来有一天我们将无需在电脑上安装那么多软件了。只需要在Chrome内核的浏览器或者其它非主流浏览器的扩展应用中心添加个插件就可以使用了&#xff0c;或者直…

利用dns解析来实现网站的负载均衡

当网站的访问量大了就会考虑负载均衡&#xff0c;这也是每一个架构师的基本功了&#xff0c;其基本地位就相当于相声里的说学逗唱&#xff0c;活好不好就看这个了 :) 传统的负载均衡思路是单点的&#xff0c;不管你是硬件的还是软件的基本都是这样的原理 对于一般的需求来说&am…

【转】我们的电子商务网站—Webtogs的发展历程

过去的11个月里&#xff0c;我和我的团队在一个新的电子商务网站webtogs.co.uk上销售户外运动和探险装备。06年9月份成为了我们新的开始。 一切从零开始 一个网站设计的好坏就看它是不是很好地将网上的产品展示变成实际的交易&#xff0c;我们所做的每件事都要达到最好的目标。…

阿里云普惠建站轻量应用服务器/ ECS 云服务器/虚拟主机如何选择?

阿里云普惠建站计划是阿里云面向刚接触云服务器的朋友们准备的&#xff0c;适合新手建站使用的建站项目。之前魏艾斯博客发过阿里云普惠建站主机低至 14 元/月 轻量应用服务器 1 核/1G/3M 带宽/40G SSD/500G 流量包/350 元/年的文章&#xff0c;简单介绍了一下这个活动&#xf…

阿里云ECS建网站(建站)超详细全套完整图文教程!菜鸟必看!

阿里云ECS建网站&#xff08;建站&#xff09;超详细全套完整图文教程&#xff01;菜鸟必看&#xff01; Ethan_HangZhou | https://www.jianshu.com/p/2604e53a7f6a 第一步&#xff1a;如何以最低价格快速买到阿里云服务器&#xff1f;1 1.1 如何便宜购买云服务器&#xff1f…

4.Windows Server2012 R2里面部署 MVC 的网站

网站部署之~Windows Server | 本地部署:http://www.cnblogs.com/dunitian/p/4822808.html#iis 后期会在博客首发更新&#xff1a;http://dnt.dkill.net 添加角色 基本功能 默认即可 装一下iis 选4.5和iis核心 其他的下面继续选 安全肯定全要的&#xff0c;常见HTTP和应用程序开…

60个优秀的免费网站模板下载(下篇)

这篇文章收集了60款各式各样的高质量网站模板&#xff0c;您可以免费下载使用。当你需要在短时间内制作出网站的时候&#xff0c;网站模板就非常有用了&#xff0c;感谢那些优秀的设计师分享他们的劳动成果&#xff0c;让更多的人可以使用他们的创意设计&#xff0c;希望这些网…