在写Python爬虫的时候,经常要使用请求头去伪装成正常用户行为。请求头是向服务器发送请求时传递额外的重要信息。例如下图:
可以看到请求头里包含了很多信息,Cookie、User-Agent、Host等。把这些信息复制到文件里是这样的:
如果要使用请求头,就要把这些信息存入字典,一个比较笨的方法就是在每个键和值两边加上单引号。但是这样的话未免太麻烦,而且不太符合我们会python这个形象。那么有没有更好的方法呢?答案当然是肯定的。在介绍这个方法之前,先来学习一下split()。
split()是字符串的方法,主要用来根据某个字符去分割字符串,然后把分割后的结果作为列表返回。下面看一下一些例子。
#定义字符串s = \'To be or not to be,that\\\'s a question.\'#默认以空格作为分割符s.split()
#定义字符串
s = \'我是谁?我从哪里来?我要到哪里去?\'
#以“我”这个字符作为分割符
s.split(\'我\')
#定义字符串
s = \'小明一把把把把把住了\'
>#当分割符在字符串里相邻时,会分割出空字符串
s.split(\'把\')
观察一下请求头,可以发现每一行都是“键: 值”这样的形式,那么先用split()根据“\\n”分割出每一行,然后根据“: ”分割出键值对,即可生成字典。
#定义请求头字典headers = {}#定义请求头字符串string = \'\'\'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36\'\'\'#用循环将键值对写入请求头字典for line in string.split(\'\\n\'): key = line.split(\': \')[0] value = line.split(\': \')[1] headers[key] = value