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通过select实现异步IO的方法
Jun 04 Python
Python制作钉钉加密/解密工具
Dec 07 Python
requests和lxml实现爬虫的方法
Jun 11 Python
Python实现的简单模板引擎功能示例
Sep 02 Python
Python验证文件是否可读写代码分享
Dec 11 Python
Python爬虫包BeautifulSoup异常处理(二)
Jun 17 Python
在Python运行时动态查看进程内部信息的方法
Feb 22 Python
python 缺失值处理的方法(Imputation)
Jul 02 Python
python实现快递价格查询系统
Mar 03 Python
python 爬取小说并下载的示例
Dec 07 Python
健身房被搭讪?用python写了个小米计时器助人为乐
Jun 08 Python
python自动化测试之Selenium详解
Mar 13 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 生成的XML以FLASH获取为乱码终极解决
2009/08/07 PHP
ThinkPHP惯例配置文件详解
2014/07/14 PHP
Joomla开启SEF的方法
2016/05/04 PHP
PHP进行批量任务处理不超时的解决方法
2016/07/11 PHP
Yii2针对指定url的生成及图片等的引入方法小结
2016/07/18 PHP
PHP Laravel中的Trait使用方法
2019/01/20 PHP
php简单检测404页面的方法示例
2019/08/23 PHP
javascript静态的url如何传递
2007/05/03 Javascript
在JavaScript里嵌入大量字符串常量的实现方法
2013/07/07 Javascript
javascript实现通过表格绘制颜色填充矩形的方法
2015/04/21 Javascript
JS实现仿新浪微博发布内容为空时提示功能代码
2015/08/19 Javascript
js实现的动画导航菜单效果代码
2015/09/10 Javascript
JS基于构造函数实现的菜单滑动显隐效果【测试可用】
2016/06/21 Javascript
Bootstrap编写一个在当前网页弹出可关闭的对话框 非弹窗
2016/06/30 Javascript
ECMAScript6轮播图实践知识总结
2016/08/17 Javascript
详解使用VueJS开发项目中的兼容问题
2018/08/02 Javascript
Vue.js 通过jQuery ajax获取数据实现更新后重新渲染页面的方法
2018/08/09 jQuery
页面内锚点定位及跳转方法总结(推荐)
2019/04/24 Javascript
JavaScript实现打字游戏
2021/02/19 Javascript
Python创建文件和追加文件内容实例
2014/10/21 Python
解决Mac安装scrapy失败的问题
2018/06/13 Python
python自动化之Ansible的安装教程
2019/06/13 Python
python自动化测试之如何解析excel文件
2019/06/27 Python
python向xls写入数据(包括合并,边框,对齐,列宽)
2021/02/02 Python
canvas基础之图形验证码的示例
2018/01/02 HTML / CSS
HTML5新特性之语义化标签
2017/10/31 HTML / CSS
美国知名户外用品畅销中心:Sierra Trading Post
2016/07/19 全球购物
办加油卡单位介绍信
2014/01/09 职场文书
上班早退检讨书
2014/01/09 职场文书
毕业生就业协议书
2014/04/11 职场文书
作文评语大全
2014/04/23 职场文书
亮剑精神演讲稿
2014/05/23 职场文书
毕业纪念册寄语大全
2015/02/26 职场文书
2015年派出所民警工作总结
2015/04/24 职场文书
周恩来的四个昼夜观后感
2015/06/03 职场文书
Docker 镜像介绍以及commit相关操作
2022/04/13 Servers