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实现的一个火车票转让信息采集器
Jul 09 Python
Python functools模块学习总结
May 09 Python
在Python的Django框架中使用通用视图的方法
Jul 21 Python
Python中字符串格式化str.format的详细介绍
Feb 17 Python
Python 模拟登陆的两种实现方法
Aug 10 Python
分析python动态规划的递归、非递归实现
Mar 04 Python
python统计多维数组的行数和列数实例
Jun 23 Python
python 读取Linux服务器上的文件方法
Dec 27 Python
Python字典的概念及常见应用实例详解
Oct 30 Python
如何基于Python实现自动扫雷
Jan 06 Python
Python中itertools的用法详解
Feb 07 Python
python mysql自增字段AUTO_INCREMENT值的修改方式
May 18 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
为了这两部电子管收音机,买了6套全新电子管和10粒刻度盘灯泡
2021/03/02 无线电
php项目打包方法
2008/02/18 PHP
php中file_exists函数使用详解
2015/05/08 PHP
PHP通过文件路径获取文件名的实例代码
2018/10/14 PHP
Laravel 中使用简单的方法跟踪用户是否在线(推荐)
2019/10/30 PHP
javascript的函数
2007/01/31 Javascript
JavaScript Event学习第五章 高级事件注册模型
2010/02/07 Javascript
jquery mobile实现拨打电话功能的几种方法
2013/08/05 Javascript
异步动态加载js与css文件的js代码
2013/09/15 Javascript
json数据与字符串的相互转化示例
2013/09/18 Javascript
24款热门实用的jQuery插件推荐
2014/12/24 Javascript
JavaScript String(字符串)对象的简单实例(推荐)
2016/08/31 Javascript
12306 刷票脚本及稳固刷票脚本(防挂)
2017/01/04 Javascript
提高JavaScript执行效率的23个实用技巧
2017/03/01 Javascript
vue-cli的webpack模板项目配置文件分析
2017/04/01 Javascript
运用jQuery写的验证表单(实例讲解)
2017/07/06 jQuery
浅谈Node.js 子进程与应用场景
2018/01/24 Javascript
聊聊JS动画库 Velocity.js的使用
2018/03/13 Javascript
JS和Canvas实现图片的预览压缩和上传功能
2018/03/30 Javascript
jQuery实现基本淡入淡出效果的方法详解
2018/09/05 jQuery
Vue scrollBehavior 滚动行为实现后退页面显示在上次浏览的位置
2019/05/27 Javascript
[01:31](回顾)杀出重围,决战TI之巅
2014/07/01 DOTA
Python调用微信公众平台接口操作示例
2017/07/08 Python
基于Python os模块常用命令介绍
2017/11/03 Python
解决Pycharm调用Turtle时 窗口一闪而过的问题
2019/02/16 Python
windows10下安装TensorFlow Object Detection API的步骤
2019/06/13 Python
在Python中等距取出一个数组其中n个数的实现方式
2019/11/27 Python
电子商务专业在校生实习自我鉴定
2013/09/29 职场文书
管理科学大学生求职信
2013/11/13 职场文书
三八妇女节活动总结
2014/05/04 职场文书
希特勒经典演讲稿
2014/05/19 职场文书
生日庆典策划方案
2014/06/02 职场文书
绵山导游词
2015/02/05 职场文书
导游词之云南丽江古城
2019/09/17 职场文书
企业版Windows 11有哪些新功能? Win11适用于企业的功能介绍
2021/11/21 数码科技
《艾尔登法环》1.03.3补丁上线 碎星伤害调整
2022/04/06 其他游戏