官方文档
http://cn.python-requests.org/zh_CN/latest/
安装
pip install requests
用来做什么?
和urllib是同一个位置的
-
get请求
r=requests.get(url)#发送请求,构建请求对象
print(r.encoding)#打印编码方式
r.encoding='utf8' #把编码方式设置为utf8
print(r.text) #按字符串类型打印响应内容
print(r.content) #按字节类型打印响应内容
print(r.status_code) #查看状态码
print(r.headers)#查看响应头部
print(r.url) #查看请求的URL
print(r.json()) #查看json格式数据
定制头部
url='http://www.baidu.com/?'
headers={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36',
}
r=requests.get(url,headers=headers)
- 带参数的get请求
'url='https://www.baidu.com/s?ie=utf-8&wd=日本 ''
headers={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36',
}
data={
'ie':'utf-8',
'wd':'日本',
}
怎么来访问呢?
data是一个原生字典即可
r=requests.get(url,headers=headers,params=data) #params参数引进关键字字典
import requests
#url='https://www.baidu.com/s?ie=utf-8&wd=日本'
url='http://www.baidu.com/s?'
headers={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36',
}
data={
'ie':'utf-8',
'wd':'日本',
}
# parameters 参数
r=requests.get(url,headers=headers,params=data) #params参数引进关键字字典
#把结果写入到文件中
with open('baidu.html','wb') as fp:
fp.write(r.content)
- post请求
必应翻译为例:
formdata是一个原生字典即可
r=requests.post(url=url,headers=headers,data=formdata)
查询text(英语)的汉语内容
import requests
url='https://cn.bing.com/ttranslationlookup?&IG=4626D48A591D4B11A887749CB21EACCE&IID=translator.5038.11'
formdata={
'text': 'wolf',
'from': 'en',
'to': 'zh-CHS',
}
headers={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36',
}
r=requests.post(url=url,headers=headers,data=formdata)
#print(r.text)
print(r.json())
响应内容为:
{'normalizedSource': 'wolf', 'displaySource': 'wolf', 'translations': [{'normalizedTarget': '狼', 'displayTarget': '狼', 'posTag': 'NOUN', 'confidence': 0.3775, 'prefixWord': '', 'backTranslations': [{'normalizedText': 'wolf', 'displayText': 'wolf', 'numExamples': 15, 'frequencyCount': 1850}, {'normalizedText': 'wolves', 'displayText': 'wolves', 'numExamples': 5, 'frequencyCount': 752}, {'normalizedText': 'coyote', 'displayText': 'coyote', 'numExamples': 5, 'frequencyCount': 38}, {'normalizedText': 'werewolf', 'displayText': 'werewolf', 'numExamples': 5, 'frequencyCount': 36}, {'normalizedText': 'lang', 'displayText': 'Lang', 'numExamples': 0, 'frequencyCount': 26}]}, {'normalizedTarget': '沃尔夫', 'displayTarget': '沃尔夫', 'posTag': 'NOUN', 'confidence': 0.108, 'prefixWord': '', 'backTranslations': [{'normalizedText': 'wolf', 'displayText': 'wolf', 'numExamples': 14, 'frequencyCount': 152}, {'normalizedText': 'whorf', 'displayText': 'Whorf', 'numExamples': 3, 'frequencyCount': 15}]}, {'normalizedTarget': '野 狼', 'displayTarget': '野狼', 'posTag': 'NOUN', 'confidence': 0.1011, 'prefixWord': '', 'backTranslations': [{'normalizedText': 'wolf', 'displayText': 'wolf', 'numExamples': 15, 'frequencyCount': 49}, {'normalizedText': 'wolves', 'displayText': 'wolves', 'numExamples': 5, 'frequencyCount': 24}, {'normalizedText': 'coyotes', 'displayText': 'coyotes', 'numExamples': 4, 'frequencyCount': 8}]}, {'normalizedTarget': '匹 狼', 'displayTarget': '匹狼', 'posTag': 'NOUN', 'confidence': 0.0985, 'prefixWord': '', 'backTranslations': [{'normalizedText': 'wolf', 'displayText': 'wolf', 'numExamples': 15, 'frequencyCount': 38}, {'normalizedText': 'wolves', 'displayText': 'wolves', 'numExamples': 2, 'frequencyCount': 10}]}, {'normalizedTarget': '大 灰 狼', 'displayTarget': '大灰狼', 'posTag': 'NOUN', 'confidence': 0.0979, 'prefixWord': '', 'backTranslations': [{'normalizedText': 'wolf', 'displayText': 'wolf', 'numExamples': 15, 'frequencyCount': 32}]}, {'normalizedTarget': '豺狼', 'displayTarget': '豺狼', 'posTag': 'NOUN', 'confidence': 0.0799, 'prefixWord': '', 'backTranslations': [{'normalizedText': 'wolf', 'displayText': 'wolf', 'numExamples': 15, 'frequencyCount': 31}, {'normalizedText': 'jackal', 'displayText': 'jackal', 'numExamples': 5, 'frequencyCount': 23}, {'normalizedText': 'wolves', 'displayText': 'wolves', 'numExamples': 2, 'frequencyCount': 12}]}, {'normalizedTarget': '恶 狼', 'displayTarget': '恶狼', 'posTag': 'NOUN', 'confidence': 0.0695, 'prefixWord': '', 'backTranslations': [{'normalizedText': 'wolf', 'displayText': 'wolf', 'numExamples': 9, 'frequencyCount': 15}, {'normalizedText': 'wolves', 'displayText': 'wolves', 'numExamples': 4, 'frequencyCount': 5}]}, {'normalizedTarget': '伍尔夫', 'displayTarget': '伍尔夫', 'posTag': 'NOUN', 'confidence': 0.0677, 'prefixWord': '', 'backTranslations': [{'normalizedText': 'woolf', 'displayText': 'Woolf', 'numExamples': 5, 'frequencyCount': 31}, {'normalizedText': 'wolf', 'displayText': 'wolf', 'numExamples': 10, 'frequencyCount': 21}]}]}
[Finished in 0.6s]
- ajax,get,post
和上面是一样的
- 代理
r=requests.get(url,headers=headers,proxies=proxies)
用法举例:
import requests
url='https://www.baidu.com/s?ie=utf-8&wd=ip'
proxies={
'http':'http://112.87.71.131:99999'
}
headers={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36',
}
r=requests.get(url,headers=headers,proxies=proxies)
with open('daili.html','wb') as fp:
fp.write(r.content)
- cookie
实现人人登录
如果碰到会话相关问题,要首先创建一个会话
s=requests.Session()
往下所有操作都是通过s进行访问 s.get s.post
import requests
#如果碰到会话相关问题,要首先创建一个会话
#往下所有操作都是通过s进行访问 s.get s.post
s=requests.Session()
#登录的url
post_url='http://www.renren.com/ajaxLogin/login?1=1&uniqueTimestamp=2019502038738'
headers={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36',
}
formdata={
'email':'15072447862',
'icode':'',
'origURL':'http://www.renren.com/home',
'domain':'renren.com',
'key_id':'1',
'captcha_type':'web_login',
'password':'b1de4c12697095c462d2b4090c0cb12d267ed14ec387019d225a3331a1ac3740',
'rkey':'6d7d2086ddd44c39ae683b6d93c0a39f',
'f':'https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3DRNBaL_83zfySfbHMGf9t3XyLUQtDMiimZR9DW2_ehXC%26wd%3D%26eqid%3Dd992ef6000af2214000000035cfcfdc1',
}
r=s.post(url=post_url,headers=headers,data=formdata)
# print(r.text)
#登录后的url
get_url='http://www.renren.com/970820607/profile'
r=s.get(url=get_url,headers=headers)
print(r.text)
网友评论