分享5个常用的Python爬虫技巧

Python应用最多的场景还是web快速开发、爬虫、自动化运维。

爬虫在开发过程中也有很多复用的过程,这里总结一下

1、基本抓取网页

get方法

import urllib2

url = "http://www.1668s.com"

response = urllib2.urlopen(url)

print(response.read())


pos

import urllib


import urllib2


url = "http://1668s.com"


form = { name : abc , password : 1234 }


form_data = urllib.urlencode(form)


request = urllib2.Request(url,form_data)


response = urllib2.urlopen(request)


print(response.read())


))


2、使用代理IP

开发爬虫过程中经常会遇到IP被封掉的情况,这时就需要用到代理IP;

在urllib2包中有

import urllib2


proxy = urllib2.ProxyHandler({ http : 127.0.0.1:8087 })


opener = urllib2.build_opener(proxy)


urllib2.install_opener(opener)


response = urllib2.urlopen( http://www.baidu.com )


print(response.read())


com )


print(response.read())


3、Cookies处理

cookies是某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密),python提供了cookielib模块用于处理cookies,cookielib模块

import urllib


from http import cookiejar


cookie_support= urllib2.HTTPCookieProcessor(cookielib.CookieJar())


opener = urllib2.build_opener(cookie_support)


urllib2.install_opener(opener)


content = urllib2.urlopen( http://1668s.com).read()


#关键在于CookieJar(),它用于管理HTTP cookie值、


#存储HTTP请求生成的cookie、向传出的HTTP请求添加cookie的对象。


#整个cookie都存储在内存中,对CookieJar实例进行垃圾回收后cookie也将丢失,所有过程都不需要单独去操作。


#手动添加cookie


cookie = "PHPSESSID=91rurfqm2329bopnosfu4fvmu7; kmsign=55d2c12c9b1e3; KMUID=b6Ejc1XSwPq9o756AxnBAg="


request.add_header("Cookie", coo

q9o756AxnBAg="


request.add_header("Cookie", cookie)


cookie)


4、伪装成浏览器

某些网站反感爬虫的到访,于是对爬虫一律拒绝请求。所以用urllib2直接访问网站经常会出现HTTP Error 403: Forbidden的情况

对有些 header 要特别留意,Server 端会针对这些 header 做检查

  1. User-Agent 有些 Server 或 Proxy 会检查该值,用来判断是否是浏览器发起的 Request
  2. Content-T

import urllib2


headers = {


User-Agent : Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6


}


request = urllib2.Request(


url = http://my.oschina.net/jhao104/blog?catalog=3463517 ,


headers = headers


)


print(urllib2.urlopen(requ

jhao104/blog?catalog=3463517 ,


headers = headers


)


print(urllib2.urlopen(request).read())


equest).read())


5、gzip压缩

有没有遇到过某些网页,不论怎么转码都是一团乱码。哈哈,那说明你还不知道许多web服务具有发送压缩

import urllib2, httplib


request = urllib2.Request( http://1668s?.com )


request.add_header( Accept-encoding , gzip )


opener = urllib2.build_opener()


p://1668s?.com )


request.add_header( Accept-encoding , gz

d_header( Accept-encoding , gz

import StringIOimport


gzipcompresseddata = f.read()


compressedstream = StringIO.StringIO(compresseddata)


gzipper = gzip.GzipFile(fileobj=compres

a = f.read()


compressedstream = StringIO.StringIO(compresseddata)


gzipper = gzip.GzipFile(fileobj=compressedstream)


print(gzipper.re

ressedstream)


print(gzipper.read())

ad())

Python学习交流群:741090028 备注:小螺号


分享到:


相關文章: