Python urllib、urllib2、httplib抓取网页代码实例


Posted in Python onMay 09, 2015

使用urllib2,太强大了
试了下用代理登陆拉取cookie,跳转抓图片......
文档:http://docs.python.org/library/urllib2.html

直接上demo代码了
包括:直接拉取,使用Reuqest(post/get),使用代理,cookie,跳转处理

#!/usr/bin/python
# -*- coding:utf-8 -*-
# urllib2_test.py
# author: wklken
# 2012-03-17 wklken@yeah.net


import urllib,urllib2,cookielib,socket

url = "http://www.testurl....." #change yourself
#最简单方式
def use_urllib2():
 try:
  f = urllib2.urlopen(url, timeout=5).read()
 except urllib2.URLError, e:
  print e.reason
 print len(f)

#使用Request
def get_request():
 #可以设置超时
 socket.setdefaulttimeout(5)
 #可以加入参数 [无参数,使用get,以下这种方式,使用post]
 params = {"wd":"a","b":"2"}
 #可以加入请求头信息,以便识别
 i_headers = {"User-Agent": "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1) Gecko/20090624 Firefox/3.5",
       "Accept": "text/plain"}
 #use post,have some params post to server,if not support ,will throw exception
 #req = urllib2.Request(url, data=urllib.urlencode(params), headers=i_headers)
 req = urllib2.Request(url, headers=i_headers)

 #创建request后,还可以进行其他添加,若是key重复,后者生效
 #request.add_header('Accept','application/json')
 #可以指定提交方式
 #request.get_method = lambda: 'PUT'
 try:
  page = urllib2.urlopen(req)
  print len(page.read())
  #like get
  #url_params = urllib.urlencode({"a":"1", "b":"2"})
  #final_url = url + "?" + url_params
  #print final_url
  #data = urllib2.urlopen(final_url).read()
  #print "Method:get ", len(data)
 except urllib2.HTTPError, e:
  print "Error Code:", e.code
 except urllib2.URLError, e:
  print "Error Reason:", e.reason

def use_proxy():
 enable_proxy = False
 proxy_handler = urllib2.ProxyHandler({"http":"http://proxyurlXXXX.com:8080"})
 null_proxy_handler = urllib2.ProxyHandler({})
 if enable_proxy:
  opener = urllib2.build_opener(proxy_handler, urllib2.HTTPHandler)
 else:
  opener = urllib2.build_opener(null_proxy_handler, urllib2.HTTPHandler)
 #此句设置urllib2的全局opener
 urllib2.install_opener(opener)
 content = urllib2.urlopen(url).read()
 print "proxy len:",len(content)

class NoExceptionCookieProcesser(urllib2.HTTPCookieProcessor):
 def http_error_403(self, req, fp, code, msg, hdrs):
  return fp
 def http_error_400(self, req, fp, code, msg, hdrs):
  return fp
 def http_error_500(self, req, fp, code, msg, hdrs):
  return fp

def hand_cookie():
 cookie = cookielib.CookieJar()
 #cookie_handler = urllib2.HTTPCookieProcessor(cookie)
 #after add error exception handler
 cookie_handler = NoExceptionCookieProcesser(cookie)
 opener = urllib2.build_opener(cookie_handler, urllib2.HTTPHandler)
 url_login = "https://www.yourwebsite/?login"
 params = {"username":"user","password":"111111"}
 opener.open(url_login, urllib.urlencode(params))
 for item in cookie:
  print item.name,item.value
 #urllib2.install_opener(opener)
 #content = urllib2.urlopen(url).read()
 #print len(content)
#得到重定向 N 次以后最后页面URL
def get_request_direct():
 import httplib
 httplib.HTTPConnection.debuglevel = 1
 request = urllib2.Request("http://www.google.com")
 request.add_header("Accept", "text/html,*/*")
 request.add_header("Connection", "Keep-Alive")
 opener = urllib2.build_opener()
 f = opener.open(request)
 print f.url
 print f.headers.dict
 print len(f.read())

if __name__ == "__main__":
 use_urllib2()
 get_request()
 get_request_direct()
 use_proxy()
 hand_cookie()

Python 相关文章推荐
遍历python字典几种方法总结(推荐)
Sep 11 Python
python利用正则表达式提取字符串
Dec 08 Python
python matplotlib画图实例代码分享
Dec 27 Python
Python爬虫包BeautifulSoup实例(三)
Jun 17 Python
python利用requests库进行接口测试的方法详解
Jul 06 Python
解决python中os.listdir()函数读取文件夹下文件的乱序和排序问题
Oct 17 Python
python中break、continue 、exit() 、pass终止循环的区别详解
Jul 08 Python
基于python操作ES实例详解
Nov 16 Python
flask 实现上传图片并缩放作为头像的例子
Jan 09 Python
解决pycharm中opencv-python导入cv2后无法自动补全的问题(不用作任何文件上的修改)
Mar 05 Python
Python命名空间namespace及作用域原理解析
Jun 05 Python
Python通过yagmail实现发送邮件代码解析
Oct 27 Python
python MySQLdb Windows下安装教程及问题解决方法
May 09 #Python
Python MySQLdb Linux下安装笔记
May 09 #Python
python实现类的静态变量用法实例
May 08 #Python
python使用pil生成图片验证码的方法
May 08 #Python
python实现连接mongodb的方法
May 08 #Python
python写入xml文件的方法
May 08 #Python
python从sqlite读取并显示数据的方法
May 08 #Python
You might like
CURL的学习和应用(附多线程实现)
2013/06/03 PHP
PHP中怎样防止SQL注入分析
2014/10/23 PHP
弹出广告特效(一个IP只弹出一次)的代码
2007/07/27 Javascript
ExtJS4 Grid改变单元格背景颜色及Column render学习
2013/02/06 Javascript
NodeJS中利用Promise来封装异步函数
2015/02/25 NodeJs
Javascript基于AJAX回调函数传递参数实例分析
2015/12/15 Javascript
Google 地图事件实例讲解
2016/08/06 Javascript
用jQuery旋转插件jqueryrotate制作转盘抽奖
2017/02/10 Javascript
jQuery插件zTree实现更新根节点中第i个节点名称的方法示例
2017/03/08 Javascript
js实现前端图片上传即时预览功能
2017/08/02 Javascript
node.js之基础加密算法模块crypto详解
2018/09/11 Javascript
vuex 中插件的编写案例解析
2019/06/10 Javascript
python共享引用(多个变量引用)示例代码
2013/12/04 Python
python实现bitmap数据结构详解
2014/02/17 Python
深入浅出学习python装饰器
2017/09/29 Python
python中的句柄操作的方法示例
2019/06/20 Python
用Python写一个自动木马程序
2019/09/17 Python
解决jupyter notebook import error但是命令提示符import正常的问题
2020/04/15 Python
Django admin管理工具TabularInline类用法详解
2020/05/14 Python
Tensorflow全局设置可见GPU编号操作
2020/06/30 Python
Pandas中两个dataframe的交集和差集的示例代码
2020/12/13 Python
python opencv肤色检测的实现示例
2020/12/21 Python
HTML5实现的图片无限加载的瀑布流效果另带边框圆角阴影
2014/03/07 HTML / CSS
印度在线杂货店:bigbasket
2018/08/23 全球购物
意大利奢侈品零售商:ilDuomo Novara
2019/09/11 全球购物
Brasty罗马尼亚:购买手表、香水、化妆品、珠宝
2020/04/21 全球购物
外语专业毕业生自荐信
2014/04/14 职场文书
档案保密承诺书
2014/06/03 职场文书
任命书模板
2014/06/04 职场文书
最美护士演讲稿
2014/08/27 职场文书
个人查摆剖析材料
2014/10/16 职场文书
2015年宣传部工作总结范文
2015/03/31 职场文书
2015年司法局工作总结
2015/05/22 职场文书
怎样写家长意见
2015/06/04 职场文书
使用pandas或numpy处理数据中的空值(np.isnan()/pd.isnull())
2021/05/14 Python
天谕手游15杯全调酒配方和调酒券的获得方式
2022/04/06 其他游戏