注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

@fc_lamp

关注Web应用解决方案MySql/PHP/Python一盏名为"飞川"的灯~

 
 
 

日志

 
 

简单封装python httplib urllib2  

2013-04-01 16:47:32|  分类: Web技术-Python |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
在做网络爬虫时,经常要写的一个功能就是获取网页内容。而在python中最常见的就是使用httplib、urllib2。
那这里简单对它们封装一下,使用更方便一点:
my_http.py

#coding:utf-8
'''
下载网页内容
@author: fc_lamp
@blog:fc-lamp.blog.163.com
'''
import urllib2
import httplib
import urlparse
import cookielib
import time
import socket

socket.setdefaulttimeout(30)

class spider():
'''
下载网页内容
'''
header = {
'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language':'zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3',
'Cache-Control':'max-age=0',
'Connection':'keep-alive',
'Host':'',
'User-Agent':'Mozilla/5.0 (Windows NT 5.1; rv:6.0.2) Gecko/20100101 Firefox/6.0.2',
'Referer':''
}

def __init__(self):
'''
初始化
'''
cookie = cookielib.CookieJar()
cookieProc = urllib2.HTTPCookieProcessor(cookie)
opener = urllib2.build_opener(cookieProc)
urllib2.install_opener(opener)

def http1(self,url,method='GET'):
'''
httplib 方式
'''
host = urlparse.urlparse(url)
sleep_time = 0
while True:
if sleep_time >15:
res = False
break
try:
http = httplib.HTTPConnection(host.netloc)
http.request(method,host.path)
res = http.getresponse().read()
break
except Exception as e:
#print str(e) 有可能网络原因
sleep_time+=5
time.sleep(sleep_time)
continue
finally:
#释放
http.close()
http = None

return res


def http2(self,url):
'''
urllib2 方式
'''
res_host = urlparse.urlparse(url)
header = self.header
header['Host'] = res_host.netloc
header['Referer'] = res_host.netloc

req = urllib2.Request(
url=url,
headers = header
)
sleep_time = 0
while True:
if sleep_time >15:
res = False
break
try:
res_q = urllib2.urlopen(req)
res = res_q.read()
break
except Exception as e:
#print str(e) #有可能网络原因
sleep_time+=5
time.sleep(sleep_time)
continue
finally:
#关闭资源
res_q.close()
res_q = None

return res




使用时:

import my_http

spider = my_http.spider()
spider.header['Referer'] = 'http://www.google.com'

print spider.http2('http://www.google.com')




  评论这张
 
阅读(674)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017