文章目录
第四章 cookie与session正则字典快速生成
1. 小知识点:字典快速生成
当我们在定制headers的时候,会有大量的数据需要转化为键值对,给每对数据加上引号,手动操作很慢,这里我们可以用一个正则的方法快速操作。
(.*?):(.*)
'$1':'$2',
这是正则表达式,选中所有要加引号的内容,按住Ctrl+r调出命令输入口,依次输入上面的正则表达式,再点Replace all
2. cookie初识
cookie: 通过在客户端记录的信息确定用户身份。
HTTP是一种无连结协议,客户端和服务器的交流仅限于请求与响应的过程,结束后就断开,下一次请求时,服务器会认为是一个新的客户端。为了维护他们之间的连结,让服务器知道,这是前一个用户发起的请求,必须在一个地方保留客户端信息。
2.1 反爬
cookie的作用就是把服务器里面记录的客户端的信息提供给服务器,让它“认得”我们。下面通过一个实例来展示它的作用。
实例:我们常用的某网站,我们的目标是爬取我们要的一个票的信息。
我想获取这个网站的源代码,并从中找到k2046。常规代码是这样的:
# 1*2*3*0*6案例
import requests
url = 'https://kyfw.12306.cn/otn/leftTicket/init?linktypeid=dc&fs=%E8%A5%BF%E5%AE%89,XAY&ts=%E9%83%91%E5%B7%9E,ZZF&date=2020-12-18&flag=N,N,Y'
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.75 Safari/537.36'}
res = requests.get(url,headers=headers)
res = res.content.decode('utf-8')
with open(r'D:\spiderdocuments\demo_12306_01.txt','w',encoding='utf-8') as f:
f.write(res)
print('写入成功!')
为了方便查找,我将获取到的源码写入了一个名为“demo_12306_01.txt”的文本文档里面。程序执行后,我在相应的路径里找到了该文件:
打开输入查找内容:
结果却显示找不到我们要的内容,这是怎么回事呢?不再啰嗦,这是因为该网站采用了异步加载的功能,ajax技术,这个大家自己百度。就是在网页不整体更新的情况下,加载更新网页的部分内容。下面我进行如下操作:
- 再次打开该网页
- 检查》源代码》network》清空》点网页上的“查询”
在这个名为query的加载项里就有我们想要的目标。如果我们要获得这个项目里的数据,就需要相应的cookie,看后面的cookie。