import requests
#登陆
url='https://accounts.douban.com/j/mobile/login/basic'
message = {"name": "******", "password": "******", "remember": "false"}
header={"User-Agent":"Mozilla/5.0",
"Sec-Fetch-Site":"same-origin",
"X-Requested-With":"XMLHttpRequest",
"Content-Type":"application/x-www-form-urlencoded",
"Accept": "application/json",
"Referer":"https://accounts.douban.com/passport/login_popup?login_source=anony",
}
res =requests.post(url,data=message,headers=header)
print(res.status_code)
print(res.cookies)
#查看日记
url_chakan='https://www.douban.com/people/150969086/notes'
header={"User-Agent":"Mozilla/5.0",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
"Referer":"https://www.douban.com/people/150969086/notes",
}
res2 =requests.get(url=url_chakan,headers=header,cookies=res.cookies)
print(res2.status_code)
print(res2.text)
从上边可以看出,很多都是一样的,所以可以写成类
import requests
class HttpRequest:
"""利用request封装get请求和post请求"""
def http_request(self):
"""url:请求的地址http://XXX:port
:param:传递的参数 非必填参数 字典的格式传递参数"""
url ='https://accounts.douban.com/j/mobile/login/basic'
data={"name": "****", "password": "****", "remember": "false"}
header = {"User-Agent": "Mozilla/5.0",
"Sec-Fetch-Site": "same-origin",
"X-Requested-With": "XMLHttpRequest",
"Content-Type": "application/x-www-form-urlencoded",
"Accept": "application/json",
"Referer": "https://accounts.douban.com/passport/login_popup?login_source=anony",
}
res=requests.post(url,data,headers=header,cookies=None)
print("响应正文是:",res.text)
print("响应状态码是:",res.status_code)
但是以上的代码不足之处是只能进行post请求,需要进行参数化,优化前:
import requests
class HttpRequest:
"""利用request封装get请求和post请求
"""
def http_request(self,url,data,hearder=None,cookie=None):
"""url:请求的地址http://XXX:port
:param:传递的参数 非必填参数 字典的格式传递参数"""
res=requests.post(url,data,headers=header,cookies=cookie)#响应结果的消息实体
return res #返回一个消息实体
if __name__=='__main__':
url = 'https://accounts.douban.com/j/mobile/login/basic'
data = {"name": "***", "password": "***", "remember": "false"}
header = {"User-Agent": "Mozilla/5.0",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
"Referer": "https://www.douban.com/people/150969086/notes",
}
res=HttpRequest().http_request(url,data,header)
print("登陆结果是:",res.text)
#查询日记
chaxun_url ='https://www.douban.com/people/150969086/notes'
chaxun_res=HttpRequest().http_request(chaxun_url,header,res.cookies)
print("充值结果是:",res.text)
请求参数化,优化后:
import requests
class HttpRequest:
"""利用request封装get请求和post请求
"""
def http_request(self,url,method,data=None,cookie=None):
"""url:请求的地址http://XXX:port
:param:传递的参数 非必填参数 字典的格式传递参数
method:请求方法,支持post和get
cookie:请求的时候传递的cookie值"""
if method=='get':
res = requests.get(url,data,cookies=cookie)
else:
res = requests.post(url,data)
return res #返回一个消息实体
if __name__=='__main__':
url = 'https://accounts.douban.com/j/mobile/login/basic'
data = {"name": "***", "password": "***", "remember": "false"}
header = {"User-Agent": "Mozilla/5.0",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
"Referer": "https://www.douban.com/people/150969086/notes"
}
res=HttpRequest().http_request(url,'post',data=data)
print("登陆结果是:",res.text)
#查询日记
chaxun_url ='https://www.douban.com/people/150969086/notes'
chaxun_res=HttpRequest().http_request(chaxun_url,'get',cookie=res.cookies)
print("充值结果是:",chaxun_res.text)