编程对任何新手来说都不是一件容易的事情。对于任何想学习编程的人来说,Python的确是一种福气。阅读Python代码就像阅读一篇文章。Python语言提供非常优雅的语法,被称为最优雅的语言之一。前锋广蟒短版编辑器总结了8种常见的爬行技巧,对初学者非常有用在
Python的开始,
主要被各种爬虫脚本使用。它编写脚本来捕获代理的本地身份验证,编写脚本来自动登录并在论坛中发布,编写脚本来自动接收电子邮件,编写脚本来识别简单的验证码。这些脚本有一个共同点,它们都与网络相关,并且它们总是使用一些方法来获得链接。因此,我们在爬行和抓取网站方面积累了很多经验。这里我们总结一下,这样我们就不必在将来做任何重复的工作了。
1,基本网页抓取
get方法
post方法
2。使用代理服务器
在某些情况下是有用的,
例如是被阻止的,或者是被限制的访问次数,等等
3。cookie句柄是,如果您想同时使用代理和cookie,那么
添加proxy_support,操作符更改如下:
4。一些伪装成浏览器访问
的网站与爬虫的访问相抵触,所以所有对爬虫的请求都被拒绝。现在,我们需要伪装成一个浏览器。
可以通过修改http包中的头:
5和页面解析
来实现。当然,对于页面解析来说,最强大的是正则表达式。
对于不同网站的不同用户是不同的,所以没有必要解释太多。
后面是解析库,常用的是两个lxml和美化组
对于这两个库,我的评估是
是一个超文本标记语言/可扩展语言处理库。Beautifulsoup在纯python中实现,效率较低。
具有实用功能,例如通过结果搜索获得一个HTML节点的源代码。
lxmlC语言编码效率高,支持Xpath。
6。验证码
的处理遇到验证码了吗?这里
是在两种情况下处理的:
类似谷歌的验证码,没有办法
简单验证码:字符数量有限,仅使用简单的平移或旋转加噪声而不失真,
仍然可以处理,一般思路是向后旋转,去除噪声,
然后分割单个字符,分割后,通过特征提取方法(例如主成分分析)缩小尺寸并生成特征库,
然后将验证码与特征库进行比较
相当复杂,所以这里不扩展。请找一本相关的课本来学习
的具体方法。
7。gzip/deflate支持
。当前的网页通常支持gzip压缩,这通常可以解决大量的传输时间。
以VeryCD的主页为例,未压缩版本为247K,压缩版本为45K,是原始版本的1/5
,这意味着抓取速度将快5倍。
但是,默认情况下,python的urllib/urllib2不支持压缩
。要返回压缩格式,您必须在请求的头标
中指定“接受编码”,然后检查头标是否有“内容编码”项,以确定在读取响应后是否需要解码,这非常繁琐。
如何使urllib2自动支持gzip、defalte?
实际上可以继承BaseHanlder类,
然后build_opener来处理它:
8,多线程并发捕获
单线程太慢,您需要多线程,这里给出一个简单的线程池模板
。该程序只打印1-10,
,但可以看出是并发的
虽然Python的多线程非常鸡肋
,但
仍然可以在一定程度上提高爬虫的效率,爬虫是一种常见的网络类型。
9。总结
阅读用Python编写的代码就像阅读英语,这让用户能够专注于解决问题,而不是理解语言本身虽然
Python是基于C语言编写的,但它放弃了C语言中复杂的指针,使其简单易学。
,作为开源软件,Python允许读取、复制甚至改进代码
这些性能成就了蟒蛇的高效率,有“生命短暂,我用蟒蛇”之称,是一种非常奇妙而强大的语言。总之,当你开始学习Python时,你必须注意这四点:
1。代码规范本身就是一个非常好的习惯,如果一开始没有良好的代码规划,将来会很痛苦。
2。多做点,少读点。许多人学习蟒蛇的时候只是看书。这不是数学和物理。你可能会学到一些例子。学习Python主要是学习编程思想。
3。经常练习。学习新的知识点后,你必须记住如何应用它们。否则,你会在学习后忘记。学习我们的专业主要是实用的。
4。高效学习。如果你觉得你的效率很低,停下来,找出原因,问问在你之前的人为什么。