在爬虫抓取某网页数据时,通常会用requests模块获取网页数据,期间为了能躲避反爬虫设置,通常需要伪装头部,代码如下。

url = "https://www.bilibili.com/video/xxxxxxx"
headers_list = [
        {
            'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36'
        },
        {
            'user-agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1'
        },
        ...
]
headers = random.choice(headers_list)
response = requests.get(url=url, headers=headers)
title = re.findall('<h1 title="(.*?)"', response.text)[0]
playInfo = re.findall('<script>window.__playinfo__=(.*?)</script>', response.text)[0]

测试期间发现,response.text获取的页面内容经常不一致,这也就使得正则表达式抓取不到想要的数据。

之所以如此,与伪装头部所定义的操作系统有关,操作系统的不同,导致了获取数据的不一致。

,