urllib
python 2.x

3.x

from urllib import request
with request.urlopen('https://api.douban.com/v2/book/2129650') as f:
data = f.read()
print('Status:', f.status, f.reason)
for k, v in f.getheaders():
print('%s: %s' % (k, v))
print('Data:', data.decode('utf-8'))
模拟浏览器
from urllib import request
req = request.Request('http://www.douban.com/')
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')
with request.urlopen(req) as f:
print('Status:', f.status, f.reason)
for k, v in f.getheaders():
print('%s: %s' % (k, v))
print('Data:', f.read().decode('utf-8'))
兼容Python2.x 3.x
#!/usr/bin/python
#-*-coding:utf-8-*- import json
import os
import re try:
from urllib.parse import urlencode
from urllib.request import Request, urlopen
except:
from urllib import urlencode
from urllib2 import Request, urlopen def get_token():
req = Request("%s/authorizations/user_token/%s" % (os.environ.get('JPY_HUB_API_URL'), os.environ.get('JPY_USER')))
req.add_header('Authorization', "token %s" % os.environ.get('JPY_HUB_API_TOKEN'))
req.add_header("Host", "192.168.176.100")
req.add_header("Referer", "%s/authorizations/user_token" % os.environ.get('JPY_HUB_API_URL')) data_success = None
data_error = None try:
f = urlopen(req)
except:
print('fail to open')
exit(-1) try:
data_success = f.read()
except:
data_error = {"user_token": ""}
finally:
f.close() if not data_error is None:
data = data_error
else:
data = json.loads(data_success.decode('utf-8')) return data["user_token"] def validate_year(v):
pattern = re.compile(r'^\d{4}$') match = pattern.match(str(v)) if match:
return True
else:
return False def get_data(url):
req = Request(url)
req.add_header('Authorization', "Bearer %s" % get_token())
data_success = None
data_error = None try:
f = urlopen(req)
except:
print('fail to open')
exit(-1) try:
data_success = f.read()
except:
data_error = {"errmsg": "请求发生错误"}
finally:
f.close() if not data_error is None:
data = data_error
else:
data = json.loads(data_success.decode('utf-8')) return data def get_market_list():
url = 'https://xxx.xx.xxx/quote/v1/market/list'
#url = 'http://127.0.0.1:8000/json/market_list.json' return get_data(url) def get_market_holiday(finance_mic, date=None):
mic = ('O', 'N', 'A', 'HK', 'DCE', 'SHFE', 'SZ', 'SS', 'CZCE')
if not finance_mic in mic:
return {"errmsg": "参数错误"} if not date is None and \
not validate_year(date):
return {"errmsg": "参数错误"} search = urlencode([
('finance_mic', finance_mic),
('date', date)
]) url = 'https://xxxx.xx.xxx/quote/v1/market/holiday?%s' % search return get_data(url)
urllib的更多相关文章
- python urllib
在伴随学习爬虫的过程中学习了解的一些基础库和方法总结扩展 1. urllib 在urllib.request module中定义下面的一些方法 urllib.request.urlopen(url,d ...
- Python3使用urllib访问网页
介绍 改教程翻译自python官网的一篇文档. urllib.request是一个用于访问URL(统一资源定位符)的Python模块.它以urlopen函数的形式提供了一个非常简单的接口,可以访问使用 ...
- 爬虫初探(1)之urllib.request
-----------我是小白------------ urllib.request是python3自带的库(python3.x版本特有),我们用它来请求网页,并获取网页源码. # 导入使用库 imp ...
- python 3.x urllib学习
urllib.request import urllib.request as ur url='http://ie.icoa.cn' user_agent = 'Mozilla/4.0 (compat ...
- Python爬虫学习(1): urllib的使用
1.urllib.urlopen 打开一个url的方法,返回一个文件对象,然后可以进行类似文件对象的操作 In [1]: import urllibIn [2]: file = urllib.urlo ...
- python2 与 python3 urllib的互相对应关系
urllib Python2 name Python3 nameurllib.urlopen() Deprecated. See urllib.request.urlopen() which mirr ...
- urllib+BeautifulSoup无登录模式爬取豆瓣电影Top250
对于简单的爬虫任务,尤其对于初学者,urllib+BeautifulSoup足以满足大部分的任务. 1.urllib是Python3自带的库,不需要安装,但是BeautifulSoup却是需要安装的. ...
- 初学python之urllib
urllib.request urlopen()urllib.urlopen(url, data, proxies) :创建一个表示远程url的类文件对象,然后像本地文件一样操作这个类文件对象来获取远 ...
- urllib.urlretrieve的用法
urllib.urlretrieve(url, local, cbk) urllib.urlretrieve(p,'photo/%s.jpg'%p.split('/')[-4]) url要下载的网站 ...
- 关于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 ...
随机推荐
- MySQL Connector Net连接vs2012问题
最近做一.NET项目,数据库用到MySQL,可是在VS2012连接数据库是遇到问题,提示:Authentication with old password no longer supported, u ...
- SQLite3中自增主键
SQLite清空表并将自增列归零 SQL标准中有TRUNCATE TABLE语句,用来清空表的所有内容. 但SQLite不支持这个语句.在SQLite中直接使用 DELETE FROM TableNa ...
- log4net 配置
1.在项目中引入log4net.dll组件: 2.在App.congfig中做如下修改 在加入如下内容: 这个节点最好放在<configuration>下的第一个位置,不然在服务里会报错. ...
- 元类metaClass
metaClass 实现动态改变对象的能力,这点特别像python(metaClass),Python中类(不是元类)的概念借鉴于Smalltalk groovy demo: class Person ...
- shutdown彻底关闭tomcat,以及多线程关闭
最近做的一个Web项目,发现shutdown.sh后,无法关掉tomcat进程. ps -ef | grep tomcat 返回tomcat进程仍然存在.经过调查发现是因为在Web应用中启动了线程池, ...
- objective-C 中两种实现动画的方法(转)
转发自:http://wayne173.iteye.com/blog/1250232 第一种方法: [UIView beginAnimations:@"Curl"context: ...
- 配置spring的事务管理
网上看到过很多关于spring事务管理的东西,但是原创的并不多,如果你的运气好能看到那些原创的文章恭喜你,因为我看到的不多,但一些原创的文 章里面枝叶太多,因为那些高手直接把自己的代码拷过来,所以说无 ...
- 【BZOJ 1009】 [HNOI2008]GT考试
Description 阿申准备报名参加GT考试,准考证号为N位数X1X2....Xn(0<=Xi<=9),他不希望准考证号上出现不吉利的数字.他的不吉利数学A1A2...Am(0< ...
- WinForm 控件库
1:Telerik 介绍: Telerik 是保加利亚的一个软件公司,专注于微软.Net平台的表示层与内容管理控件.Telerik 提供高度稳定性和丰富性能的组件产品,并可应用在非常严格的环境中. 现 ...
- mir9-lua——《热血沙城》45度ARPG手游-Lua移植版
mir9——<热血沙城>,是9秒论坛开源的一个使用Cocos2d-x-2.2.1引擎开发的45度ARPG手游Demo,源代码为c++.mir9-lua是mir9的Lua移植版,使用Quic ...