爬虫案例之人人网账号的登录

通过cookie来实现登录。首先,F12选中preserve log(保存日志,否则只显示每次响应的链接)。然后输入登录人人,可以看到有一条POST数据发送了出去,POST的数据内容也可以看得到。

然后找到下面圈中的信息,作为请求头。

 代码实现:

from urllib import request,error
base_url = "http://www.renren.com/500036511"
try:
    header = {
        "Accept": "*/*",
        # "Accept-Encoding": "gzip, deflate",
        "Accept-Language": " zh-CN,zh;q=0.9,en;q=0.8",
        "Connection": " keep-alive",
        "Cookie": "anonymid=jp81scsr-m3h24l; depovince=SD; _r01_=1; ick_login=aacfb495-5350-40d6-91fc-bd357f6791e6; first_login_flag=1; ln_uact=18311111111; ln_hurl=http://hdn.xnimg.cn/photos/hdn521/20141119/1920/h_main_sr9c_e12f0004ae9b195a.jpg; jebe_key=e5451188-27e4-47cf-b818-2be4f021f41b%7C6cc5d4525ca875adc220a7d75a58c1ce%7C1543825438519%7C1%7C1543825335065; XNESSESSIONID=6042d7b91457; wp=1; wp_fold=1; jebecookies=698784b2-f0b0-473a-8724-5eb40f57520c|||||; _de=2C2DF1EAA1D3BE05BF6867E14F0FBBD5; p=224447c3d70a3a1ec2076726cef706232; t=c05c2122f5564ec7fcf643900d9452b32; societyguester=c05c2122f5564ec7fcf643900d9452b32; id=500036511; xnsid=8c7ce6ce; ver=7.0; loginfrom=null",
        "Host": "www.renren.com",
        "Origin": "http://www.renren.com",
        "Referer": "http://www.renren.com/500036511",
        "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36"
    }
    res = request.Request(url=base_url,headers=header)
    response = request.urlopen(url=res)
    print(response.read().decode("utf8"))
except error.HTTPError as e:
    print(e.code)
except error.URLError as f:
    print(f.reason)
else:
    print("成功")

 上面代码中:

"Accept-Encoding" : "gzip, deflate"如果不注释,会报错。

Traceback (most recent call last):
  File "E:/project/爬虫/人人网账号登录.py", line 17, in <module>
    print(response.read().decode("utf8"))
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8b in position 1: invalid start byte

gzip是一种数据格式 
默认且目前仅使用deflate算法压缩data部分,此法用于压缩传输 
如果服务器支持Gzip,那么客户端必须要IE5.5以上! 
数据返回给客户端时候已经被gzip压缩了,只是IE可以自动解压,而你的程序里面没有自动解压而已…… 
同样道理,你可以弄个解压算法来把乱码的数据解压,即可得到正常的HTML返回结果。

运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值