前面讲了cookie的概念,现在来实战操作一下:直接访问人人网代码女神的主页
1.如果不使用cookie直接来访问请求:
在 网页直接访问女神主页直接会弹到登录页面。
女神主页URL:http://www.renren.com/256450404/profile
代码示例:
#encoding:utf-8
#代码女神赵洁琼主页:http://www.renren.com/256450404/profile
#人人网登录URL:http://www.renren.com/Plogin.do
from urllib import request
#1.不使用cookie访问女神主页
nvshen_url="http://www.renren.com/256450404/profile"
headers={
'User-Agent':"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 UBrowser/6.2.4098.3 Safari/537.36"
}
req=request.Request(url=nvshen_url,headers=headers)
resp=request.urlopen(req)
#print(resp.read())
#将读取的内容写入html文件中
with open('renren.html','w') as fp:
#write函数必须写入一个str的数据类型
#resp.read()读出来的是一个bytes数据类型
#bytes ->decode -> str
#str ->encode ->bytes
fp.write(resp.read().decode('utf-8'))
获得的结果html文件打开如下图,虽然有点乱码, 但是还是能看出来 是登录页面,说明要想进入女神主页,还是需要登录的cookie进行请求访问才能实现。
如果出现下方中文乱码的 情况,需要将保存的html文件UTF-8编码改为国标编码,GB2312之类的,如下下图所示
<meta http-equiv="Content-Type" content="text/html; charset=GB2312" />
2.使用cookie来进行访问
上一段不用cookie直接访问女神的主页,会直接弹出到登录页,现在我们尝试加上登录之后的cookie进行登录,在request header中找到cookie
代码示例
#encoding:utf-8
#代码女神赵洁琼主页:http://www.renren.com/256450404/profile
#人人网登录URL:http://www.renren.com/Plogin.do
from urllib import request
#2.使用cookie访问女神主页
nvshen_url="http://www.renren.com/256450404/profile"
headers={
'User-Agent':"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 UBrowser/6.2.4098.3 Safari/537.36",
'Cookie':'anonymid=k8cdsuqh-srt2i0; depovince=GW; _r01_=1; taihe_bi_sdk_uid=bfe301037dffbe108487b72db5bf7e6b; jebe_key=6e985591-b125-4e8c-a086-6ffa0d70d0c2%7C50f2c4113393fea64a81ef35b552f056%7C1585446344625%7C1%7C1585446346127; jebe_key=6e985591-b125-4e8c-a086-6ffa0d70d0c2%7C50f2c4113393fea64a81ef35b552f056%7C1585446344625%7C1%7C1585446346129; JSESSIONID=abcB_WFVogSDj9AkbRLex; ick_login=b047f395-23df-4b1c-bc91-912f67b0f2fa; taihe_bi_sdk_session=d4e78eb86e06c00aa0c3e1487f6275a8; t=ce3517a93cf84e7d1e51f9b959106a9c6; societyguester=ce3517a93cf84e7d1e51f9b959106a9c6; id=974111896; xnsid=da5394c8; jebecookies=ab44e1ca-1fb8-4a83-8c39-9bd813f4d802|||||; ver=7.0; loginfrom=null; wp_fold=0'
}
req=request.Request(url=nvshen_url,headers=headers)
resp=request.urlopen(req)
#print(resp.read())
with open('renren2.html','w',encoding='utf-8') as fp:
#write函数必须写入一个str的数据类型
#resp.read()读出来的是一个bytes数据类型
#bytes ->decode -> str
#str ->encode ->bytes
fp.write(resp.read().decode('UTF-8'))
打开生成的renren2.html文件,如果还是出现中文乱码,还是 一样的解决办法。