Cookie简介

Cookie 并不是它的原意“甜饼”的意思, 而是一个保存在客户机中的简单的文本文件, 这个文件与特定的 Web 文档关联在一起, 保存了该客户机访问这个Web 文档时的信息, 当客户机再次访问这个 Web 文档时这些信息可供该文档使用。用于服务器识别区分不同客户端,从而做出不同的相应,返回不同页面。

接下来要爬取本人QQ空间数据,对比设置Cookie和不设置Cookie的爬取效果

不设置cookie进行爬取

首先找到服务器给自己设置的Cookie,程序没有cookie去访问服务器时,服务器检测不到相应的cookie,则会返回一个登录的页面

from urllib import request


def main():
my_profile = 'https://user.qzone.qq.com/我的QQ号码'
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36',
}
req = request.Request(url=my_profile, headers=headers)
res = request.urlopen(req)
content = res.read()
with open('login.html', 'w', encoding='utf-8') as f:
f.write(content.decode('utf-8'))


if __name__ == '__main__':
main()

爬取完成,保存到当前目录的login.html,双击打开。可以看到不设置Cookie,直接访问网站时,访问的是一个登录的页面

爬虫中设置cookie保持登录状态_html

设置cookie进行爬取

首先找到服务器给自己设置的Cookie,程序带有cookie去访问服务器时,服务器检测到相应的cookie,会返回一个已经登录的页面

爬虫中设置cookie保持登录状态_chrome_02

from urllib import request


def main():
my_profile = 'https://user.qzone.qq.com/我的QQ号码'
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36',
# 设置cookie保持登录状态
'cookie':'pgv_pvi=8412289024; RK=jLhMzt3Cdx; ptcz=a8defb095fe0d097a6d1a28441745a7a1ff6f2022e7e365f5e1b47cf2b539687; pgv_pvid=6362010689; pgv_si=s7859980288; _qpsvr_localtk=0.3081990894105111; pgv_info=ssid=s3576019350; uin=o0269524963; skey=@p6zziRwc1; p_uin=o0269524963; pt4_token=muqBg8m4CuQLe5xRd5a4jvu1P0i1JBayZJfi1pJ8NW8_; p_skey=HwRtarJ-l1qwxh5y*NFX8msOAiTjjyRikpjLUblMKvc_; Loading=Yes'
}
req = request.Request(url=my_profile, headers=headers)
res = request.urlopen(req)
content = res.read()
with open('profile.html', 'w', encoding='utf-8') as f:
f.write(content.decode('utf-8'))


if __name__ == '__main__':
main()

爬取完成,保存到当前目录的profile.html,双击打开。可以看到设置Cookie,直接访问网站时,访问的是一个已经登录的页面

爬虫中设置cookie保持登录状态_服务器_03