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解惑之True和False详解
Apr 24 Python
Python中类的初始化特殊方法
Dec 01 Python
Python爬虫框架scrapy实现downloader_middleware设置proxy代理功能示例
Aug 04 Python
opencv python 图像轮廓/检测轮廓/绘制轮廓的方法
Jul 03 Python
余弦相似性计算及python代码实现过程解析
Sep 18 Python
python将图片转base64,实现前端显示
Jan 09 Python
python属于软件吗
Jun 18 Python
Python如何利用Har文件进行遍历指定字典替换提交的数据详解
Nov 05 Python
Python类class参数self原理解析
Nov 19 Python
python FTP编程基础入门
Feb 27 Python
用Python制作灯光秀短视频的思路详解
Apr 13 Python
python基础之类属性和实例属性
Oct 24 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数组转成json格式的方法
2015/03/09 PHP
php使用Jpgraph绘制复杂X-Y坐标图的方法
2015/06/10 PHP
PHP中遇到的时区问题解决方法
2015/07/23 PHP
PHP利用正则表达式将相对路径转成绝对路径的方法示例
2017/02/28 PHP
php的命名空间与自动加载实现方法
2019/08/25 PHP
PhpStorm的使用教程(本地运行PHP+远程开发+快捷键)
2020/03/26 PHP
JavaScript 题型问答有答案参考
2010/02/17 Javascript
锋利的jQuery 要点归纳(三) jQuery中的事件和动画(下:动画篇)
2010/03/24 Javascript
利用jQuery实现WordPress中@的ID悬浮显示评论内容
2015/12/11 Javascript
如何基于原生javaScript生成带图片的二维码
2019/11/21 Javascript
JS FormData对象使用方法实例详解
2020/02/12 Javascript
vue框架中props的typescript用法详解
2020/02/17 Javascript
微信小程序使用GoEasy实现websocket实时通讯
2020/05/19 Javascript
Element InputNumber 计数器的实现示例
2020/08/03 Javascript
[17:00]DOTA2 HEROS教学视频教你分分钟做大人-帕克
2014/06/10 DOTA
python基于xml parse实现解析cdatasection数据
2014/09/30 Python
详解Django框架中用context来解析模板的方法
2015/07/20 Python
django批量导入xml数据
2016/10/16 Python
python实现unicode转中文及转换默认编码的方法
2017/04/29 Python
浅谈numpy数组的几种排序方式
2017/12/15 Python
python+tkinter编写电脑桌面放大镜程序实例代码
2018/01/16 Python
对pandas replace函数的使用方法小结
2018/05/18 Python
利用ImageAI库只需几行python代码实现目标检测
2019/08/09 Python
Python中bisect的使用方法
2019/12/31 Python
如何通过Python3和ssl实现加密通信功能
2020/05/09 Python
python实现马丁策略回测3000只股票的实例代码
2021/01/22 Python
Python的Tqdm模块实现进度条配置
2021/02/24 Python
不同浏览器对CSS3和HTML5的支持状况
2009/10/31 HTML / CSS
波兰最大的度假胜地和城市公寓租赁运营商:Sun & Snow
2018/10/18 全球购物
万豪国际住宅与别墅集团:Homes & Villas by Marriott International
2020/10/08 全球购物
大学毕业生自我鉴定
2013/11/05 职场文书
党员个人剖析材料
2014/09/30 职场文书
2014业务员年终工作总结
2014/12/09 职场文书
索赔员岗位职责
2015/02/15 职场文书
冬季作息时间调整通知
2015/04/24 职场文书
MySQL中的布尔值,怎么存储false或true
2021/06/04 MySQL