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题(最长回文串)看题目!给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。在构造过程中,请注意区分大小写。比…

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

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

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

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

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

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

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

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

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

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

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

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

汽车芯片科普

来源:湖杉资本智能驾驶涉及人机交互、视觉处理、智能决策等,核心是 AI 算法和芯片。伴随汽车电子化提速,汽车半导体加速成长,2017 年全球市场规模 288 亿美元(26%),远高于整车销量增速&#xff…

hanoi塔java_Java实现hanoi塔

学习数据结构绕不过会遇到汉诺塔的问题,这个也比较经典,问题我也不详细描述了。简单来说三根木桩,初始状态下一根木桩上叠放着n个盘子,大盘在下小盘在上,任你操作,把这些盘子移动到第三根木桩,当…

信息太多,时间太少: 大脑如何区分重要和不重要的事?

来源:脑与心智毕生发展研究中心CLIMB我们总是会错过一些想看到、听到或感觉到的东西——尤其是当有大量信息争夺我们的注意时。是什么吸引了我们的注意?记住重要的事情需要多长时间?神经科学家(研究大脑和行为的科学家)发现,大脑的…

java 并发 set_高并发下的Java数据结构(List、Set、Map、Queue)

1.并发ListVector 或者 CopyOnWriteArrayList 是两个线程安全的List实现,ArrayList 不是线程安全的。因此,应该尽量避免在多线程环境中使用ArrayList。如果因为某些原因必须使用的,则需要使用Collections.synchronizedList(List list)进行包装…

知识图谱和图分析与可视化

来源:知链数据“知识图谱和图分析与可视化”这个题目看起来比较大,我尝试基于本人的一些图数据可视化与分析经验,对知识图谱和图分析与可视化之间的关系进行简单梳理,并分享一些以知识图谱为代表的图数据与图可视化、图分析结合进…

新一代人工智能专利分析

来源:三思派人工智能(Artificial Intelligence,AI)自诞生以来,已经过约60年的发展。2006年深度学习算法的重大突破带来了人工智能的第三次爆发。同时也引发专利申请的激增,2006年至2016年,十年的…

MYSQL性能优化详解(二)

接着上一篇学习:http://www.cnblogs.com/quanzhiguo/p/6401453.html 七、MySQL数据库Schema设计的性能优化 高效的模型设计 适度冗余-让Query尽两减少Join 大字段垂直分拆-summary表优化 大表水平分拆-基于类型的分拆优化 统计表-准实时优化 合适的数据类型 时间存储…

图解谷歌大脑丶城市大脑丶全球脑与互联网大脑的关系

人类很早就朦胧的发现社会组织具有神经系统的特征。19世纪到20世纪,一些前瞻的哲学家们开始不断将科技与脑进行了关联,提出了"器官映射","社会神经网络","全球脑"。 21世纪之后,更多科技大脑概念不断涌现,从互联网大脑到城市大脑,从谷…

滴滴自动驾驶CEO张博:十年内无人驾驶对消费者没有吸引力丨厚势汽车

来源:WAVE2019张博:在 2012 年滴滴创立的时候,我们是一个非常简单的想法。我们发现在打出租车的场景下,无论是司机还是乘客效率都非常低。在滴滴出现之前,一个乘客想要打出租车必须要下楼招一下手,这个信号…