Python爬虫入门四之Urllib库的高级用法

1.设置Headers

有些网站不会同意程序直接用上面的方式进行访问,如果识别有问题,那么站点根本不会响应,所以为了完全模拟浏览器的工作,我们需要设置一些Headers 的属性。

首先,打开我们的浏览器,调试浏览器F12,我用的是Chrome,打开网络监听,示意如下,比如知乎,点登录之后,我们会发现登陆之后界面都变化了,出现一个新的界面,实质上这个页面包含了许许多多的内容,这些内容也不是一次性就加载完成的,实质上是执行了好多次请求,一般是首先请求HTML文件,然后加载JS,CSS 等等,经过多次请求之后,网页的骨架和肌肉全了,整个网页的效果也就出来了。

2015-02-13 01:31:55 的屏幕截图

拆分这些请求,我们只看一第一个请求,你可以看到,有个Request URL,还有headers,下面便是response,图片显示得不全,小伙伴们可以亲身实验一下。那么这个头中包含了许许多多是信息,有文件编码啦,压缩方式啦,请求的agent啦等等。

其中,agent就是请求的身份,如果没有写入请求身份,那么服务器不一定会响应,所以可以在headers中设置agent,例如下面的例子,这个例子只是说明了怎样设置的headers,小伙伴们看一下设置格式就好。

这样,我们设置了一个headers,在构建request时传入,在请求时,就加入了headers传送,服务器若识别了是浏览器发来的请求,就会得到响应。

另外,我们还有对付”反盗链”的方式,对付防盗链,服务器会识别headers中的referer是不是它自己,如果不是,有的服务器不会响应,所以我们还可以在headers中加入referer

例如我们可以构建下面的headers

同上面的方法,在传送请求时把headers传入Request参数里,这样就能应付防盗链了。

另外headers的一些属性,下面的需要特别注意一下:

User-Agent : 有些服务器或 Proxy 会通过该值来判断是否是浏览器发出的请求
Content-Type : 在使用 REST 接口时,服务器会检查该值,用来确定 HTTP Body 中的内容该怎样解析。
application/xml : 在 XML RPC,如 RESTful/SOAP 调用时使用
application/json : 在 JSON RPC 调用时使用
application/x-www-form-urlencoded : 浏览器提交 Web 表单时使用
在使用服务器提供的 RESTful 或 SOAP 服务时, Content-Type 设置错误会导致服务器拒绝服务

其他的有必要的可以审查浏览器的headers内容,在构建时写入同样的数据即可。

2. Proxy(代理)的设置

urllib2 默认会使用环境变量 http_proxy 来设置 HTTP Proxy。假如一个网站它会检测某一段时间某个IP 的访问次数,如果访问次数过多,它会禁止你的访问。所以你可以设置一些代理服务器来帮助你做工作,每隔一段时间换一个代理,网站君都不知道是谁在捣鬼了,这酸爽!

下面一段代码说明了代理的设置用法

 

3.Timeout 设置

上一节已经说过urlopen方法了,第三个参数就是timeout的设置,可以设置等待多久超时,为了解决一些网站实在响应过慢而造成的影响。

例如下面的代码,如果第二个参数data为空那么要特别指定是timeout是多少,写明形参,如果data已经传入,则不必声明。

 

 

4.使用 HTTP 的 PUT 和 DELETE 方法

http协议有六种请求方法,get,head,put,delete,post,options,我们有时候需要用到PUT方式或者DELETE方式请求。

PUT:这个方法比较少见。HTML表单也不支持这个。本质上来讲, PUT和POST极为相似,都是向服务器发送数据,但它们之间有一个重要区别,PUT通常指定了资源的存放位置,而POST则没有,POST的数据存放位置由服务器自己决定。
DELETE:删除某一个资源。基本上这个也很少见,不过还是有一些地方比如amazon的S3云服务里面就用的这个方法来删除资源。

如果要使用 HTTP PUT 和 DELETE ,只能使用比较低层的 httplib 库。虽然如此,我们还是能通过下面的方式,使 urllib2 能够发出 PUT 或DELETE 的请求,不过用的次数的确是少,在这里提一下。

 

 5.使用DebugLog

可以通过下面的方法把 Debug Log 打开,这样收发包的内容就会在屏幕上打印出来,方便调试,这个也不太常用,仅提一下

以上便是一部分高级特性,前三个是重要内容,在后面,还有cookies的设置还有异常的处理,小伙伴们加油!

转载:静觅 » Python爬虫入门四之Urllib库的高级用法

转载于:https://www.cnblogs.com/BigFishFly/p/6379946.html

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

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

相关文章

Magic Leap 价值 20 多亿美元的 AR 幻梦,现在醒了

来源:传感器技术那个用特效来吹出 AR 神话的 Magic Leap,终于有了新动静。 当地时间 12 月 10 日,增强现实(AR)领域的“知名”公司 Magic Leap 宣布,将 Magic Leap One Creator Edition 改名为 Magic Leap …

mysql约束_不是吧,阿Sir,MySQL约束你竟然还不懂!

以前写的太乱了,翻出来重新整理下系列目录:MySQL入门,问题不大【增删改查极速上手】(一) 引入约束(1) 约束出现在哪里? 想要讲解约束,就要知道约束用在哪里,用来干嘛?SQL 语言通过定义一个关系所…

dc持久内存与mysql_Calypso Systems推出测试软件和服务器测试傲腾数据中心级持久内存...

Calypso Systems测试Optane DCPMM(DC Persistent Memory Module 数据中心级持久性内存模块)的性能,带宽超过36500MB/s(顺序读写速度128000MB/s),每秒读写速度为3240万IOPS(顺序读取速度5000),平均响应时间达到0.11微秒。Calypso PM(持久性内存…

计算机行业研究及2020年策略:聚焦主赛道,投资真成长(84页)

来源:国元证券1、行业涨幅位居前列,个股表现精彩纷呈……2、IT 产业大变革,新机遇不断涌现近年来,以 5G、物联网、云计算、大数据、人工智能、区块链等技术为代表的信息 科技行业快速发展,新兴技术不断涌现&#xff0c…

最长回文串_第78天——第78题(最长回文串 )

今天又是阴天,不过阴天凉快,我喜欢。第78天——第78题(最长回文串)看题目!给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。在构造过程中,请注意区分大小写。比…

python是后端语言还是前端语言_从前端到后台-语言选择

截止至2019年10月,TIOBE编程语言排行如图所示这里重点考虑前三种语言和JS。C作为底层语言直接忽略,主要对JAVA,Python和JS进行对比。JAVA: 强类型静态语言,入门较Python难度更大,常用于企业级应用。如金融,…

二进制权值计算 lsb_2020年二级计算机基础知识备考(第二章)

点击蓝字关注我们哟~2020年9月全国计算机等级考试倒计时29天,还没有好好备考的小伙伴们抓紧时间备考了~今天,跟着考无忧继续备考一下二级计算机基础知识的《第二章 信息的表示和储存》。2.1数据与信息1.数据:客观事物的符号表示,如…

机器人产业这些领域大有可为

来源:中国机器人网前言:机器人产业面临哪些挑战,未来有哪些趋势?当前,世界正迎来新一轮科技革命。传统制造业转型升级释放出巨大的市场潜力,催生高科技机器人的新需求,成为加速产业发展的新动力…

mysql数据库安全机制研究意义_MySQL数据库的安全机制

收稿日期:2001 - 12 - 30   作者简介:李书振(1965 - ) ,男 ,河南人 ,工程师 ,主要研究方向:数据库原理及应用、管理信息系统. 文章编号 :1001 - 9081(2002)06 - 0051 - 03 MySQL 数据库的安全机制 李书振 (武汉大学 信息管理学院 ,湖北 武汉 430072) 摘  要 :MySQL 是一个多…

国产AI全面崛起!盘点11款2019年热门国产AI芯片

来源:芯师爷人工智能的崛起主要得益于算法、数据和计算能力三方面的突破,这三方面的能力展现离不开AI芯片。由此,AI芯片的研发制造成了人工智能技术发展过程中的关键环节。不同于其它传统芯片,AI芯片是近年新兴产品,拥…

python中set函数作用如何自己用代码实现_Python进阶开发之元类编程

Photo byJoyous From Lofter本文目录类是如何产生的如何使用type创建类理解什么是元类使用元类的意义元类实战:ORM.1. 类是如何产生的类是如何产生?这个问题肯定很傻。实则不然,很多人只知道使用继承的表面形式来创建一个类,却不知…

《构建之法》 读书笔记(4)

敏捷流程 敏捷开发原则.尽早并持续地交付有价值的软件以满足顾客需求。敏捷流程欢迎需求的变化,并利用这种变化来提高用户的竞争优势。.经常发布可用的软件,发布间隔可以从几周到几个月,能短则短。.业务人员和开发人员在项目开发过程中应该每…

【周末阅读】10年内,19个关键技术将改变世界

来源:人民网 中国AI协会【导读】根据世界经济论坛全球议程理事会关于《未来软件与社会》的一份报告,到2025年前,很多新兴技术将会达到其临界点。该理事会调查走访了超过800名来自技术行业的企业高管和专家,并分享了他们关于这些黑…

linux mysql安装_LINUX 安装 MYSQL

安装成功的样子:[[email protected] mysql]# mysql -u root -pEnter password:Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 18130Server version: 8.0.19 MySQL Community Server - GPLCopyright (c) 2000, 2020, Oracle…

上传文件实时显示网速怎么实现_担心PC程序吃内存占网速?有了它终于放心了...

自乔帮主发布iPhone至今,智能手机已经走过了13个年头,其系统、UI、操作逻辑都已经逐步完善且相当傻瓜化。所以总有许多人切换到PC上时,总感觉缺了那么点东西,Windows系统的生产力自然是毋庸置疑,但其繁琐、复杂且不直观…

Jmeter生成html格式测试报告

使用jmeter进行性能测试,运行完毕后生成html格式的测试报告,需要进行如下操作: 1.在C:\apache-jmeter-3.0\bin文件夹下的user.properties文本中添加如下信息: jmeter.save.saveservice.assertion_results_failure_messagetrue jme…

python字符串怎么用_零基础如何使用python处理字符串?

摘要:Python的普遍使用场景是自动化测试、爬取网页数据、科学分析之类,这其中都涉及到了对数据的处理,而数据的表现形式很多,今天我们来讲讲字符串的操作。字符串是作为任意一门编程语言的基础,在Python中的关键字叫做…

iOS NSString 与NSData转化

1. 字符串转Data NSString * str "str"; NSData *data [str dataUsingEncoding:NSUTF8StringEncoding]; 2.NSData 转NSString NSString * str [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 3.data 转char NSData *data; char * ha…

python eval函数格式_Python函数中eval函数知识点

python 的集合类型和 其他语言类似, 是一个无序不重复元素集,我在之前学过的其他的语言好像没有见过这个类型,基本功能包括关系测试和消除重复元素.集合对象还支持union(联合), intersection(交), difference(差)和sysmmetricdifference(对称差集)等数学运算,和我们…

为什么在python中整数的值没有限制_python-为什么math.log接受大整数值?

我终于钻入python math lib source code,发现了这一点:/* A decent logarithm is easy to compute even for huge ints, but libm cantdo that by itself -- loghelper can. func is log or log10, and name is"log" or "log10". Note that ove…