位置: 编程技术 - 正文

python爬虫入门教程--优雅的HTTP库requests(二)(python爬虫教程)

编辑:rootadmin

推荐整理分享python爬虫入门教程--优雅的HTTP库requests(二)(python爬虫教程),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:python爬虫自学系列,python爬虫入门教程非常详细,python爬虫入门教程非常详细,python爬虫教程,python爬虫教程,python爬虫入门教程,python爬虫入门教程,python爬虫入门教程非常详细,内容如对您有帮助,希望把文章链接给更多的朋友!

前言

urllib、urllib2、urllib3、httplib、httplib2 都是和 HTTP 相关的 Python 模块,看名字就觉得很反人类,更糟糕的是这些模块在 Python2 与 Python3 中有很大的差异,如果业务代码要同时兼容 2 和 3,写起来会让人崩溃。

好在,还有一个非常惊艳的 HTTP 库叫 requests,它是 GitHUb 关注数最多的 Python 项目之一,requests 的作者是 Kenneth Reitz 大神。

requests 实现了 HTTP 协议中绝大部分功能,它提供的功能包括 Keep-Alive、连接池、Cookie持久化、内容自动解压、HTTP代理、SSL认证、连接超时、Session等很多特性,最重要的是它同时兼容 python2 和 python3。requests 的安装可以直接使用 pip 方法:pip install requests

发送请求

响应内容

请求返回的值是一个Response 对象,Response 对象是对 HTTP 协议中服务端返回给浏览器的响应数据的封装,响应的中的主要元素包括:状态码、原因短语、响应首部、响应体等等,这些属性都封装在Response 对象中。

requests 除了支持 GET 请求外,还支持 HTTP 规范中的其它所有方法,包括 POST、PUT、DELTET、HEADT、OPTIONS方法。

查询参数

很多URL都带有很长一串参数,我们称这些参数为URL的查询参数,用"&#;"附加在URL链接后面,多个参数之间用"&"隔开,比如: ,现在你可以用字典来构建查询参数:

请求首部

requests 可以很简单地指定请求首部字段 Headers,比如有时要指定 User-Agent 伪装成浏览器发送请求,以此来蒙骗服务器。直接传递一个字典对象给参数 headers 即可。

请求体

requests 可以非常灵活地构建 POST 请求需要的数据,如果服务器要求发送的数据是表单数据,则可以指定关键字参数 data,如果要求传递 json 格式字符串参数,则可以使用json关键字参数,参数的值都可以字典的形式传过去。

作为表单数据传输给服务器

python爬虫入门教程--优雅的HTTP库requests(二)(python爬虫教程)

作为 json 格式的字符串格式传输给服务器

响应内容

HTTP返回的响应消息中很重要的一部分内容是响应体,响应体在 requests 中处理非常灵活,与响应体相关的属性有:content、text、json()。

content 是 byte 类型,适合直接将内容保存到文件系统或者传输到网络中

text 是 str 类型,比如一个普通的 HTML 页面,需要对文本进一步分析时,使用 text。

如果使用第三方开放平台或者API接口爬取数据时,返回的内容是json格式的数据时,那么可以直接使用json()方法返回一个经过json.loads()处理后的对象。

代理设置

当爬虫频繁地对服务器进行抓取内容时,很容易被服务器屏蔽掉,因此要想继续顺利的进行爬取数据,使用代理是明智的选择。如果你想爬取墙外的数据,同样设置代理可以解决问题,requests 完美支持代理。这里我用的是本地 ShadowSocks 的代理,(socks协议的代理要这样安装 pip install requests[socks] )

超时设置

requests 发送请求时,默认请求下线程一直阻塞,直到有响应返回才处理后面的逻辑。如果遇到服务器没有响应的情况时,问题就变得很严重了,它将导致整个应用程序一直处于阻塞状态而没法处理其他请求。

正确的方式的是给每个请求显示地指定一个超时时间。

Session

在python爬虫入门教程--快速理解HTTP协议(一)中介绍过HTTP协议是一中无状态的协议,为了维持客户端与服务器之间的通信状态,使用 Cookie 技术使之保持双方的通信状态。

有些网页是需要登录才能进行爬虫操作的,而登录的原理就是浏览器首次通过用户名密码登录之后,服务器给客户端发送一个随机的Cookie,下次浏览器请求其它页面时,就把刚才的 cookie 随着请求一起发送给服务器,这样服务器就知道该用户已经是登录用户。

构建一个session会话之后,客户端第一次发起请求登录账户,服务器自动把cookie信息保存在session对象中,发起第二次请求时requests 自动把session中的cookie信息发送给服务器,使之保持通信状态。

项目实战

最后是一个实战项目,如何用 requests 实现知乎自动登录并给用户发私信,我会在下一篇文章中进行讲解。

总结

好了,

标签: python爬虫教程

本文链接地址:https://www.jiuchutong.com/biancheng/372366.html 转载请保留说明!

上一篇:Python操作使用MySQL数据库的实例代码(python mypy)

下一篇:Python爬虫之模拟知乎登录的方法教程(python模拟登录爬取数据)

  • 广东税务师报名条件
  • 总账一级科目有哪些
  • 事业单位无形资产摊销年限
  • 包工包料工程要交哪些税
  • 报税软件费用可以退吗
  • 技术服务税率是多少 现金
  • 客运地方税务局监制发票还能用吗?
  • 交易性金融资产公允价值变动计入
  • 挂其他应付款的会计分录
  • 前期物业开办费和承接费一样吗
  • 企业年会的增值税能抵扣吗?
  • 核定征收是不是不需要发票了
  • 自主就业退役士兵从事个体经营的
  • 小规模纳税人代账流程
  • 存款保险能取出来钱吗
  • 内部退养个税计算方式
  • 开票系统怎么改管理员名字
  • 递延所得税资产和负债怎么理解
  • 不可抗力后果承担
  • 政府补助企业的钱要交税吗
  • 发票丢了还可以重开吗
  • 出口退税申报时间限制
  • 增值税专票可以重开吗
  • 企业打款认证计入什么科目
  • 多发的奖金收回怎么做账
  • 汇丰银行账户管理费
  • 汇算清缴后补缴得企业所得税,计入哪年的税负
  • 固定资产残值率计算公式
  • os x 10.10 yosemite自动纠正怎么关?os x yosemite自动纠正功能关闭教程
  • php在线阅读器源代码
  • 记账凭证和会计分录的区别
  • vue获取input
  • php curl_exec
  • 酒店装修费用计入什么科目
  • 股权融资服务协议
  • vue的actions
  • 【深度学习】datasets.ImageFolder 使用方法
  • 零基础舞蹈培训
  • 计算机视觉竞赛很重要吗
  • 当月扣缴的社保是上个月的吗
  • 总公司接活让分公司去做可以吗
  • 勾选认证客户端不成功怎么办
  • phpcms怎么样
  • 织梦产品详情页相关产品推荐调用代码
  • 官方的问答
  • 公司车辆保险费要交印花税吗
  • 小规模做账要做应交税费吗
  • 计提税金如何做凭证
  • 补充登记法的操作步骤
  • 产品成本归集和分配是哪一章的
  • 跨年更正错误记账凭证的方法
  • 企业研发费用包括工资支出吗
  • 未开票收入如何纳税申报
  • 资产负债表里包括哪两个数据
  • 建筑业当月有收入,没成本怎样办
  • 新建厂房哪些费用可以计入
  • 建筑行业小规模纳税人税率1%
  • 所得税汇算清缴前取得跨年发票
  • 深入sql编程开发与优化
  • AppleMobileDeviceService.exe是什么进程?AppleMobileDeviceService.exe是病毒吗?
  • reg.exe是什么东西?
  • 将Red Hat 9.0 CD iso合成一张DVD iso的方法
  • win8系统开机启动项怎么设置
  • win7系统的分区类型怎么选
  • win10系统浏览器怎么换成ie
  • 第三人称控制器在平面上老掉
  • 多个checkbox选中触发事件
  • extjs grid设置某列背景颜色和字体颜色的实现方法
  • Cocos2dx3.2 Crazy Tetris 绘制不规则方块 遮罩(ClippingNode的使用)
  • IE6/IE7/IE8/IE9中tbody的innerHTML不能赋值的完美解决方案
  • opengl入门教程
  • vue微信分享功能
  • shell编程$1
  • python lambda的用法
  • python中的变量
  • jQuery插件Flexslider实现图片轮播、图文结合滑动切换效果
  • 税控盘时间不对有影响吗
  • 泰兴市地方税务局
  • 2023年四川城乡居民养老保险多少钱
  • 河南省焦煤集团董事长
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设