
url ='https://www.baidu.com/s?tn=25017023_5_dg&ch=1&ie=UTF-8'#1.指定url2.发送请求
主要用到response.get()函数和response.post函数
response.get()函数
response = requests.get(url=url,params=param, headers=head)#2.发起请求
get函数的url参数就是你指定的url;
params参数是处理url携带的参数,可以定义一个数字字典,将其封装到字典中;
kw = input('enter a word!')
param = {'wd': kw}
headers参数是发送请求时所对应的User-Agent信息,这里涉及到UA检测和UA伪装
head = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36'
}
response.post()函数
response = requests.post(url=url, data=data, headers=headers)
url参数就是你指定的url;
url ='https://fanyi.baidu.com/sug'#1.指定url
data参数是处理url携带的参数,可以定义一个数字字典,将其封装到字典中;
word = input('enter a word:')
data = {'kw':word}
headers参数是发送请求时所对应的User-Agent信息,这里涉及到UA检测和UA伪装
headers={
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36'
}
3.获取响应数据
根据响应数据的类型确定采用requests的哪种方法,有requests.text和requests.json()
response.text
page_text = response.text
response.json()
dic_json = response.json()4.持久化存储
fileName =jianru +'.html'
with open(fileName, 'w', encoding='utf-8') as jy:
jy.write(page_text )
print(jianru +'over!')
filename是你要保存的文件名称,默认会保存在当前工作目录的下一级
w是打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
encoding='utf-8’声明python代码的文本格式是utf-8编码,也即告诉python解释器要按照utf-8编码的方式来读取程序。如果不加这个声明,无论代码中还是注释中有中文都会报错。注意不要有空格。
fileName =word+'.json'
fp = open(fileName,'w', encoding='utf-8')
json.dump(dic_json, fp, ensure_ascii=False)
json.dump() 将内存中的值传入到指定json文件中
dump(obj, fp, *, skipkeys=False, ensure_ascii=True, check_circular=True,
allow_nan=True, cls=None, indent=None, separators=None,
default=None, sort_keys=False, **kw)
dump函数有两个参数必传,分别是obj和fp, obj是json格式的对象,fp是写入的文件对象。
import requests
if __name__ == "__main__":
#UA伪装:将对应的User-Agent封装到字典中,对应的是requests.get中第三个参数
head = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36'
}
#处理url携带的参数,将其封装到字典中,对应的是requests.get函数中第二个params参数
kw = input('enter a word!')
param = {'wd': kw}
url ='https://www.baidu.com/s?tn=25017023_5_dg&ch=1&ie=UTF-8'#1.指定url
response = requests.get(url=url, params=param, headers=head)#2.发起请求
page_text = response.text#3.获取响应数据
print(page_text)
fileName = kw+'.html'
with open(fileName, 'w', encoding='utf-8') as fp:#4.持久化存储
fp.write(page_text)
print(fileName +'over')
#总结:requests.get的三个参数(url=xx, params=xx, headers=xx)
#requests模块的核心编码流程
#1.指定url 2.发起请求 3.获取响应数据 4.持久化存储
import requests
import json
if __name__ =="__main__":
headers={
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36'
}
url ='https://fanyi.baidu.com/sug'#1.指定url
word = input('enter a word:')
data = {'kw':word}#我这里把word加了双引号,给它固定住了,应该去掉word,让它成为一个变量
response = requests.post(url=url, data=data, headers=headers)#2.发送请求,这里为什么用post,而不用get呢,因为
#从抓包工具中看,浏览器向百度翻译发送的是post请求,Request Method: POST
dic_json = response.json()#3.获取响应数据,为什么不是requests.text呢?因为从抓包工具中看,Response Headers中的
#Content-Type是json
print(dic_json)
fileName =word+'.json'
fp = open(fileName,'w', encoding='utf-8')
json.dump(dic_json, fp, ensure_ascii=False)#4.持久化存储,这里要用dump函数,表示写入文件,文件为json字符串格式,无返回
#obj必传,表示待转换的文件,fp必传,表示文件对象
#json.dumps 序列化时对中文默认使用的ascii编码.想输出中文需要指定ensure_ascii=False(此时编码为utf-8):
print('over')