爬虫 | <Response [418]>原因

发布时间 2023-07-16 22:17:17作者: 张Zong在修行

在我们调用requests.get(网址)访问网页时,输出为<Response [418]>。是什么原因呢?

如下运行代码:

# 导入访问网页要用的库
import requests

# 申明一个变量存储网址
# 网址是一个字符串变量,注意网址前后都必须有引号
url = 'https://movie.douban.com'

# 用requests.get(网址)访问网页 
# 库名.函数名(要访问的网址) 
print(requests.get(url))

#type()函数查看requests.get()函数返回结果的类型
print(type(requests.get(url)))

【终端输出】

<Response [418]>
<class 'requests.models.Response'>

原因:

requests.get()函数返回<Response [418]>。

响应状态码418表示访问的网站有反爬虫机制,而解决方法就是带请求头header(suser-agent)访问

User-Agent:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36

解决方法:

在浏览器上手动打开Chrome的F12:

Network->Doc(如果没有出现这一排,可先按F5刷新一下)->Name下是你搜索的页面的html 点击一下(或按F5再刷新)->找到Headers下面的 User-Agent,复制图示框内所有。

怎么用User-Agent?

复制的内容写成字典形式,冒号前的User-Agent作为字典元素的键,冒号后整体以字符串形式(注意加引号)作为键值。

headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'}

然后 将赋值语句 headers = headers 作为requests.get(url) 第二个参数。

代码改进:

import requests

url='https://www.douban.com'
headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'}

res = requests.get(url,headers=headers)
print(res) # <Response [200]>
print(type(res)) # <class 'requests.models.Response'>

这样就可以进行爬取了。

注意:

  • 爬虫的第一步是请求网页,原则上请求网页要返回200才能继续后面的操作。若requests.get()函数返回的响应状态码不是200,通常要查找请求不成功的原因,修正后在再继续后面的操作。