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 with statement 进行文件操作指南
Aug 22 Python
Python使用Supervisor来管理进程的方法
May 28 Python
简单实现python画圆功能
Jan 25 Python
遗传算法python版
Mar 19 Python
Python 统计字数的思路详解
May 08 Python
python机器学习之KNN分类算法
Aug 29 Python
Python的Lambda函数用法详解
Sep 03 Python
python学生信息管理系统实现代码
Dec 17 Python
Python用input输入列表的实例代码
Feb 07 Python
Python基于pip实现离线打包过程详解
May 15 Python
python如何查看网页代码
Jun 07 Python
python实现PDF中表格转化为Excel的方法
Jun 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 checkdate、getdate等日期时间函数操作详解
2010/03/11 PHP
PHP中preg_match正则匹配中的/u、/i、/s含义
2015/04/17 PHP
php使用pdo连接sqlite3的配置示例
2016/05/27 PHP
[原创]图片分页查看
2006/08/28 Javascript
jQuery Tab插件 用于在Tab中显示iframe,附源码和详细说明
2011/06/27 Javascript
仿jQuery的siblings效果的js代码
2011/08/09 Javascript
JavaScript模板入门介绍
2012/09/26 Javascript
window.open打开页面居中显示的示例代码
2013/12/27 Javascript
jquery禁用右键单击功能屏蔽F5刷新
2014/03/17 Javascript
jQuery+jsp下拉框联动获取本地数据的方法(附源码)
2015/12/03 Javascript
JavaScript必知必会(十) call apply bind的用法说明
2016/06/08 Javascript
原生JS实现风箱式demo,并封装了一个运动框架(实例代码)
2016/07/22 Javascript
js两种拼接字符串的简单方法(必看)
2016/09/02 Javascript
jQuery之动画效果大全
2016/11/09 Javascript
js数字舍入误差以及解决方法(必看篇)
2017/02/28 Javascript
JS实现自动轮播图效果(自适应屏幕宽度+手机触屏滑动)
2017/06/19 Javascript
vue 监听屏幕高度的实例
2018/09/05 Javascript
深入浅析Vue.js 中的 v-for 列表渲染指令
2018/11/19 Javascript
详解Vue+Element的动态表单,动态表格(后端发送配置,前端动态生成)
2019/04/20 Javascript
浅谈redux, koa, express 中间件实现对比解析
2019/05/23 Javascript
Postman参数化实现过程及原理解析
2020/08/13 Javascript
[01:02:25]2014 DOTA2华西杯精英邀请赛5 24 NewBee VS VG
2014/05/25 DOTA
python迭代器实例简析
2014/09/25 Python
Python入门教程之if语句的用法
2015/05/14 Python
Python算法输出1-9数组形成的结果为100的所有运算式
2017/11/03 Python
Python读写文件模式和文件对象方法实例详解
2019/09/17 Python
python获取天气接口给指定微信好友发天气预报
2020/12/28 Python
毕业生找工作的求职信范文
2013/12/24 职场文书
大学生文员专业个人求职信范文
2014/01/05 职场文书
实践单位评语
2014/04/26 职场文书
医药公司开票员岗位职责
2015/04/15 职场文书
公司员工手册范本
2015/05/14 职场文书
2016年度继续教育学习心得体会
2016/01/19 职场文书
护理工作心得体会
2016/01/22 职场文书
争做文明公民倡议书
2019/06/24 职场文书
Python 多线程之threading 模块的使用
2021/04/14 Python