当前位置: 首页 > 科技观察

Python快速入门的7个技巧

时间:2023-03-12 03:21:49 科技观察

Python在Web快速开发、爬虫、自动化运维中应用最为广泛。爬虫的开发过程中也有很多复用的过程。这里总结一下,以后可以省点事。1、基本的网络爬取get方法post方法2、使用代理IP在开发爬虫的过程中,IP经常被封,这时候就需要代理IP;在urllib2包中有一个ProxyHandler类,通过该类可以设置一个代理来访问网页,如下代码片段所示:3.Cookies处理Cookies是通过某种方式存储在用户本地终端上的数据(通常是加密的)网站,以识别用户的身份并跟踪会话。Python提供了cookielib模块来处理cookies,cookielib模块的主要作用是提供可以存储cookies的对象,以便与urllib2模块一起使用来访问互联网资源。代码片段:关键在于CookieJar(),它用于管理HTTPcookie值,存储HTTP请求生成的cookie,以及向外发的HTTP请求添加cookie对象。整个cookie保存在内存中,CookieJar实例垃圾回收后cookie会丢失,不需要所有进程单独操作。手动添加cookies:4.冒充浏览器有些网站不喜欢爬虫的访问,所以拒绝所有爬虫的请求。所以直接用urllib2访问网站时,经常会出现HTTPError403:Forbidden。特别注意一些headers,server端会检查这些headers:User-Agent有些Server或者Proxy会检查这个值来判断是否是浏览器发起的Request。Content-Type在使用REST接口时,Server会检查这个值来决定如何解析HTTPBody中的内容。这时候可以通过修改http包中的header来实现。代码片段如下:5、验证码的处理对于一些简单的验证码,可以进行简单的识别。我们只是做了一些简单的验证码识别,但是一些反人类的验证码,比如12306,是可以通过打码平台人工打码的,当然这是有偿的。6、gzip压缩你有没有遇到过一些网页,不管怎么转码,都是乱码。哈哈,那说明你不知道很多web服务都有发送压缩数据的能力,可以减少60%以上在网络线路上传输的大量数据。对于XMLWeb服务尤其如此,因为XML数据可以高度压缩。但是一般服务器不会给你发送压缩数据,除非你告诉服务器你可以处理压缩数据。所以你需要这样修改代码:这是关键:创建一个Request对象并添加一个Accept-encoding头来告诉服务器你可以接受gzip压缩数据。然后是数据解压:7.多线程并发抓取如果单线程太慢,就需要多线程。这是一个简单的线程池模板。这个程序只是简单的打印了1-10,但是可以看出是并发的。Python的多线程虽然很鸡肋,但是对于频繁联网的爬虫来说还是可以一定程度上提高效率的。