1、header

header是你向网页发送请求中包含的包括浏览器类型等一系列数据,对于网站来说,header是一个简单的防爬虫方式

格式如下:

headers={
    'User-Agent': xxx,
}

如何寻找header中应该填什么东西?

以www.baidu.com为例

打开网页并在任意地方右键,点击 检查,或点击键盘上的F12

alt

进入如下页面,点击network,并且刷新页面

image-20220706140556816alt

得到如下页面,我们选择左侧任意一项,随后在右侧找到Header中的Request Headers,复制其中的User-Agent即可(可以应付大多数情况,部分网站需要复制所有内容,在有多项Request Headers时,每行后面都需要有一个英文逗号分隔)

alt

至此,我们已经完成了headers的全部代码

2、获取网页源代码

url=xxx
resp=requests.get(url,headers=headers)
pagecontent=resp.text

url即网页链接

3、对网页进行分析

网页分析的方式有很多,常见的有bs4、正则表达式匹配。此处不进行详细介绍

4、特殊情况

例如明日方舟抽卡记录,如图所示,数据并没有按照一种固定的方式保存,因此我们无法利用网页分析获取全部数据。

image-20220706141717727alt

对于这种情况,我们可以通过之前的 检查(F12)-->network中,找到网页数据来源,如下图所示:

alt

在找到数据所在的包之后,我们返回Headers,找到数据来源

image-20220706142313903alt

在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)