加入了usr-agent,但HTTP代码依旧返回418<Response [418]>

项目场景:

本人最近刚开始学习python的网络数据采集方面的内容,但是,当本人使用Python的requests对网页的数据进行采集时,即使已经加入了user-agent作为headers,返回的HTTP状态依旧为418。


问题描述

由于现在绝大多数网站都设有一定的反**机制,因此,使用Python的requests采集网页数据时,需要加入headers,不然就很容易被网站的反**机制识别到,进而返回状态码418。

然后本人在使用Python的requests对网页的数据进行采集时,即使已经加入了user-agent作为headers,但是,依旧无法得到结果,通过打印res发现返回的状态码是<418>。下面是部分代码的展示

def get_data(n):
  base_url = 'https://book.douban.com/top250'
  headers = {
    'User - Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36'
  }
  params = {
      'start':(n-1)*25
  }
  res=requests.get(base_url,headers=headers,params=params)
  print(res)
get_data(1)

原因分析:

通过对代码的不断检查,发现问题出现在headers里面,本人的代码是'User - Agent',这是由于本人在对network中的user-agent进行复制的过程中,为了图方便,直接选择了复制,如图所示。


解决方案:

因此,通过对中间空格的删除,最终成功实现了http的状态码返回为<Response [200]>

总结:其实在写代码的过程中,往往遇到这类由于自己偷懒,而导致的问题,这类问题比较细小,但有时候反而不容易发现。

猜你喜欢

转载自blog.csdn.net/weixin_45913327/article/details/126563580