urllib

Python 标准库 urllib2 的使用细节

python 2.x

3.x

  1. from urllib import request
  2.  
  3. with request.urlopen('https://api.douban.com/v2/book/2129650') as f:
  4. data = f.read()
  5. print('Status:', f.status, f.reason)
  6. for k, v in f.getheaders():
  7. print('%s: %s' % (k, v))
  8. print('Data:', data.decode('utf-8'))

模拟浏览器

  1. from urllib import request
  2.  
  3. req = request.Request('http://www.douban.com/')
  4. req.add_header('User-Agent', 'Mozilla/6.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/8.0 Mobile/10A5376e Safari/8536.25')
  5. with request.urlopen(req) as f:
  6. print('Status:', f.status, f.reason)
  7. for k, v in f.getheaders():
  8. print('%s: %s' % (k, v))
  9. print('Data:', f.read().decode('utf-8'))

兼容Python2.x 3.x

  1. #!/usr/bin/python
  2. #-*-coding:utf-8-*-
  3.  
  4. import json
  5. import os
  6. import re
  7.  
  8. try:
  9. from urllib.parse import urlencode
  10. from urllib.request import Request, urlopen
  11. except:
  12. from urllib import urlencode
  13. from urllib2 import Request, urlopen
  14.  
  15. def get_token():
  16. req = Request("%s/authorizations/user_token/%s" % (os.environ.get('JPY_HUB_API_URL'), os.environ.get('JPY_USER')))
  17. req.add_header('Authorization', "token %s" % os.environ.get('JPY_HUB_API_TOKEN'))
  18. req.add_header("Host", "192.168.176.100")
  19. req.add_header("Referer", "%s/authorizations/user_token" % os.environ.get('JPY_HUB_API_URL'))
  20.  
  21. data_success = None
  22. data_error = None
  23.  
  24. try:
  25. f = urlopen(req)
  26. except:
  27. print('fail to open')
  28. exit(-1)
  29.  
  30. try:
  31. data_success = f.read()
  32. except:
  33. data_error = {"user_token": ""}
  34. finally:
  35. f.close()
  36.  
  37. if not data_error is None:
  38. data = data_error
  39. else:
  40. data = json.loads(data_success.decode('utf-8'))
  41.  
  42. return data["user_token"]
  43.  
  44. def validate_year(v):
  45. pattern = re.compile(r'^\d{4}$')
  46.  
  47. match = pattern.match(str(v))
  48.  
  49. if match:
  50. return True
  51. else:
  52. return False
  53.  
  54. def get_data(url):
  55. req = Request(url)
  56. req.add_header('Authorization', "Bearer %s" % get_token())
  57. data_success = None
  58. data_error = None
  59.  
  60. try:
  61. f = urlopen(req)
  62. except:
  63. print('fail to open')
  64. exit(-1)
  65.  
  66. try:
  67. data_success = f.read()
  68. except:
  69. data_error = {"errmsg": "请求发生错误"}
  70. finally:
  71. f.close()
  72.  
  73. if not data_error is None:
  74. data = data_error
  75. else:
  76. data = json.loads(data_success.decode('utf-8'))
  77.  
  78. return data
  79.  
  80. def get_market_list():
  81. url = 'https://xxx.xx.xxx/quote/v1/market/list'
  82. #url = 'http://127.0.0.1:8000/json/market_list.json'
  83.  
  84. return get_data(url)
  85.  
  86. def get_market_holiday(finance_mic, date=None):
  87. mic = ('O', 'N', 'A', 'HK', 'DCE', 'SHFE', 'SZ', 'SS', 'CZCE')
  88. if not finance_mic in mic:
  89. return {"errmsg": "参数错误"}
  90.  
  91. if not date is None and \
  92. not validate_year(date):
  93. return {"errmsg": "参数错误"}
  94.  
  95. search = urlencode([
  96. ('finance_mic', finance_mic),
  97. ('date', date)
  98. ])
  99.  
  100. url = 'https://xxxx.xx.xxx/quote/v1/market/holiday?%s' % search
  101.  
  102. return get_data(url)

urllib的更多相关文章

  1. python urllib

    在伴随学习爬虫的过程中学习了解的一些基础库和方法总结扩展 1. urllib 在urllib.request module中定义下面的一些方法 urllib.request.urlopen(url,d ...

  2. Python3使用urllib访问网页

    介绍 改教程翻译自python官网的一篇文档. urllib.request是一个用于访问URL(统一资源定位符)的Python模块.它以urlopen函数的形式提供了一个非常简单的接口,可以访问使用 ...

  3. 爬虫初探(1)之urllib.request

    -----------我是小白------------ urllib.request是python3自带的库(python3.x版本特有),我们用它来请求网页,并获取网页源码. # 导入使用库 imp ...

  4. python 3.x urllib学习

    urllib.request import urllib.request as ur url='http://ie.icoa.cn' user_agent = 'Mozilla/4.0 (compat ...

  5. Python爬虫学习(1): urllib的使用

    1.urllib.urlopen 打开一个url的方法,返回一个文件对象,然后可以进行类似文件对象的操作 In [1]: import urllibIn [2]: file = urllib.urlo ...

  6. python2 与 python3 urllib的互相对应关系

    urllib Python2 name Python3 nameurllib.urlopen() Deprecated. See urllib.request.urlopen() which mirr ...

  7. urllib+BeautifulSoup无登录模式爬取豆瓣电影Top250

    对于简单的爬虫任务,尤其对于初学者,urllib+BeautifulSoup足以满足大部分的任务. 1.urllib是Python3自带的库,不需要安装,但是BeautifulSoup却是需要安装的. ...

  8. 初学python之urllib

    urllib.request urlopen()urllib.urlopen(url, data, proxies) :创建一个表示远程url的类文件对象,然后像本地文件一样操作这个类文件对象来获取远 ...

  9. urllib.urlretrieve的用法

    urllib.urlretrieve(url, local, cbk) urllib.urlretrieve(p,'photo/%s.jpg'%p.split('/')[-4]) url要下载的网站 ...

  10. 关于python3.X 报"import urllib.request ImportError: No module named request"错误,解决办法

    #encoding:UTF-8 import urllib.request url = "http://www.baidu.com" data = urllib.request.u ...

随机推荐

  1. Oracle访问数据的存取方法

    1) 全表扫描(Full Table Scans, FTS) 为实现全表扫描,Oracle读取表中所有的行,并检查每一行是否满足语句的WHERE限制条件.Oracle顺序地读取分配给表的每个数据块,直 ...

  2. 《ENVI下遥感影像自然真彩色合成方法》——TM、spot5

    来源:http://blog.sina.com.cn/s/blog_764b1e9d0100tz4f.html#bsh-73-375271630

  3. JS禁用浏览器退格键

    我们在真实的项目开发中经常会使用JS 对键盘上的一些按键进行禁用,常见的比如说退格键(backspace/ 后退键),我在一个项目中就遇到过在页面编辑的时候禁用掉退格键,因为退格键会发生页面后退,代码 ...

  4. 微软职位内部推荐-SENIOR PRODUCER

    微软近期Open的职位: Role Based in Shanghai, ChinaTitle: ProducerWe are seeking a Senior Producer to lead Pr ...

  5. DB天气app冲刺二阶段第三天

    今天发现自己不能乖乖的按照计划来进行项目了.弄着这个然后不知不觉就弄到那边去了,结果就是哪边都弄不好,但又很纠结.还是要给自己一个计划白班才行,每次只是计划这一两天的根本不行.明天要指定一个计划白板, ...

  6. 1206: [HNOI2005]虚拟内存 - BZOJ

    Description 操作系统中一种重要的存储管理技术就是虚拟内存技术.操作系统中允许进程同时运行,也就是并行.每个进程都有其相对独立的数据块(进程运行的过程中将对其进行读写操作).理想的情况下,这 ...

  7. 配置单节点伪分布式Hadoop

    先写的这一篇,很多东西没再重复写. 一.所需软件 jdk和ubuntu都是32位的. 二.安装JDK 1.建jdk文件夹 cd usr sudo mkdir javajdk 2.移动mv或者复制cp安 ...

  8. 网站404,500错误页面的处理,及500异常写入errorLog日志

    1.web.xml 配置 <error-page> <error-code>404</error-code> <location>/404.jsp< ...

  9. [转]掌握 ASP.NET 之路:自定义实体类简介 --自定义实体类和DataSet的比较

    转自: http://www.microsoft.com/china/msdn/library/webservices/asp.net/CustEntCls.mspx?mfr=true 发布日期 : ...

  10. hdu 4664 Triangulation 博弈论

    看到这题时,当时还不会做,也没搞懂sg函数,于是狠狠的钻研了下博弈论,渐渐的知道了sg函数…… 现在在来做这题就很容易了,1A 打表容易发现在80左右的时候就出现循环节了 代码如下: #include ...