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中input和raw_input的一点区别
Oct 21 Python
python使用Flask框架获取用户IP地址的方法
Mar 21 Python
Python 提取dict转换为xml/json/table并输出的实现代码
Aug 28 Python
python脚本监控Tomcat服务器的方法
Jul 06 Python
python仿evething的文件搜索器实例代码
May 13 Python
python numpy实现文件存取的示例代码
May 26 Python
Python实现时间序列可视化的方法
Aug 06 Python
Python笔记之工厂模式
Nov 20 Python
Python使用pickle进行序列化和反序列化的示例代码
Sep 22 Python
python IP地址转整数
Nov 20 Python
python 制作简单的音乐播放器
Nov 25 Python
Pytest之测试命名规则的使用
Apr 16 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
修改了一个很不错的php验证码(支持中文)
2007/02/14 PHP
深入php常用函数的使用汇总
2013/06/08 PHP
php多功能图片处理类分享(php图片缩放类)
2014/03/14 PHP
PHPUnit安装及使用示例
2014/10/29 PHP
PHP内置的Math函数效率测试
2014/12/01 PHP
php经典算法集锦
2015/11/14 PHP
Python中使用django form表单验证的方法
2017/01/16 PHP
PHP实现的mongoDB数据库操作类完整实例
2018/04/10 PHP
Yii 访问 Gii(脚手架)时出现 403 错误
2018/06/06 PHP
JavaScript去掉数组中的重复元素
2011/01/13 Javascript
javascript学习笔记(十四) window对象使用介绍
2012/06/20 Javascript
js实现快速分享功能(你的文章分享工具)
2013/06/25 Javascript
javascript设计模式之工厂模式示例讲解
2014/03/04 Javascript
AngularJS入门教程之服务(Service)
2016/07/27 Javascript
AngularJS入门教程之ng-checked 指令详解
2016/08/01 Javascript
windows 下安装nodejs 环境变量设置
2017/02/02 NodeJs
mescroll.js上拉加载下拉刷新组件使用详解
2017/11/13 Javascript
vue实现的上传图片到数据库并显示到页面功能示例
2018/03/17 Javascript
Node.JS用纯JavaScript生成图片或滑块式验证码功能
2019/09/12 Javascript
javascript 设计模式之组合模式原理与应用详解
2020/04/08 Javascript
JavaScript实时更新当前的时间的示例代码
2020/07/15 Javascript
python 借助numpy保存数据为csv格式的实现方法
2018/07/04 Python
数组保存为txt, npy, csv 文件, 数组遍历enumerate的方法
2018/07/09 Python
python中redis查看剩余过期时间及用正则通配符批量删除key的方法
2018/07/30 Python
python爬虫爬取微博评论案例详解
2019/03/27 Python
django多个APP的urls设置方法(views重复问题解决)
2019/07/19 Python
Tensorflow 多线程设置方式
2020/02/06 Python
Sofft鞋官网:世界知名鞋类品牌
2017/03/28 全球购物
证婚人搞笑证婚词
2014/01/10 职场文书
社区春季防火方案
2014/06/02 职场文书
教师师德师风自我剖析材料
2014/09/29 职场文书
干部培训简讯
2015/07/20 职场文书
学习型家庭事迹材料(2016精选版)
2016/02/29 职场文书
python机器学习Github已达8.9Kstars模型解释器LIME
2021/11/23 Python
大脑的记忆过程在做数据压缩,不同图形也有共同的记忆格式
2022/04/29 数码科技
Mysql中常用的join连接方式
2022/05/11 MySQL