[关闭]
@nemos 2017-05-06T01:11:53.000000Z 字数 1461 阅读 718

urllib

py


发送请求

  1. import urllib2
  2. response = urllib.urlopen(url[
  3. , data #访问URL时要传入的数据,要urlencode处理
  4. , timeout])#延迟
  5. html = response.read()

构造请求

  1. import urllib2
  2. headers = {'User-agent' : user_agent} #修改请求信息
  3. request = urllib2.Request(url, headers = headers)#发送请求
  4. response = urllib2.urlopen(request) #获得回应
  5. html = response.read()

代理设置

  1. proxy_handler = urllib2.ProxyHandler({"http" : 'http://some-proxy.com:8080'})
  2. opener = urllib2.build_opener(proxy_handler)
  3. None = urllib2.install_opener(opener)

异常处理

  1. URLError
    • 注意:无错误代码
    • 无法上网
    • 连接不到服务器
    • 服务器不存在
  2. HTTPError
    • 注意:存在错误代码
    • 各种HTTP状态码
  1. try:
  2. response = urllib2.urlopen(url)
  3. except: urllib2.URLError, urllib2.HTTPError as e:
  4. e.reason #错误信息
  5. e.code #错误代码

使用Cookie

CookieJar -> FileCookJar -> MozillaCookieJar & LWPCookieJar

  1. import urllib2
  2. import cookielib
  3. cookie = cookielib.CookieJar() #声明实例保存cookie
  4. handler = urllib2.HTTPCookieProcessor(cookie)#创建cookie处理器
  5. opener = urllib2.build_opener(handler) #类似urlopen
  6. response = opener.open(url)
  7. #此时cookie保存有从url中存在的cookie

保存Cookie到文件

  1. filename = 'cookie.txt'
  2. cookie = cookielib.MozillaCookieJar(filename)
  3. handler = urllib2.HTTPCookieProcessor(cookie)
  4. opener = urllib2.build_opener(handler)
  5. response = opener.open(url)
  6. cookie.save(ignore_discard = True, #即使Cookie被丢弃也保存
  7. ignore_expires = True) #覆盖原文件写入

从文件中获取Cookie

  1. import http.cookiejar as cookielib
  2. cookie = cookielib.MozillaCookieJar()
  3. cookie.load('cookie.txt', ignore_discard=True, ignore_expires=True)
  4. request = urllib2.Request(url)
  5. opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
  6. response = opener.open(request)

其他

  1. import urlparse
  2. urlparse.urljoin(seed_url, link) #将相对路径转化为绝对路径
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注