1、header
header是你向网页发送请求中包含的包括浏览器类型等一系列数据,对于网站来说,header是一个简单的防爬虫方式
格式如下:
headers={
'User-Agent': xxx,
}
如何寻找header中应该填什么东西?
以www.baidu.com为例
打开网页并在任意地方右键,点击 检查,或点击键盘上的F12
进入如下页面,点击network,并且刷新页面
得到如下页面,我们选择左侧任意一项,随后在右侧找到Header中的Request Headers,复制其中的User-Agent即可(可以应付大多数情况,部分网站需要复制所有内容,在有多项Request Headers时,每行后面都需要有一个英文逗号分隔)
至此,我们已经完成了headers的全部代码
2、获取网页源代码
url=xxx
resp=requests.get(url,headers=headers)
pagecontent=resp.text
url即网页链接
3、对网页进行分析
网页分析的方式有很多,常见的有bs4、正则表达式匹配。此处不进行详细介绍
4、特殊情况
例如明日方舟抽卡记录,如图所示,数据并没有按照一种固定的方式保存,因此我们无法利用网页分析获取全部数据。
对于这种情况,我们可以通过之前的 检查(F12)-->network中,找到网页数据来源,如下图所示:
在找到数据所在的包之后,我们返回Headers,找到数据来源
在Headers中,我们看到了这个数据来源的url为Request URL,我们只需向该url中发送请求,就可以收到包含我们所需要数据的list(列表)了,同时,我们可以url进行分析,得到其中的page=x表示第x页的数据,因此,进行循环遍历即可获取全部数据
for i in range(1,9):
url='https://ak.hypergryph.com/user/api/inquiry/gacha?page='+i+'&token=kOjeMulueovjGS9zEgsHOu6m&channelId=1'
resp=requests.get(url,headers=headers)
#以下是对数据进行处理
dic=resp.json()
for j in dic['data']['list']:
m=j['chars']
for k in m:
l=[]
q=q+1
l.append(q)
l.append(k['name'])
l.append(k['rarity']+1)
lis.append(l)