无法在 Python 3 中访问某些站点 requests.get

cit*_*our 0 web-scraping python-3.x python-requests

from requests import get
get('http://www.fb.com')
<Response [200]>
get('http://www.subscene.com')
<Response [403]
Run Code Online (Sandbox Code Playgroud)

我正在尝试构建一个网络抓取工具来抓取和下载字幕。但是我无法请求任何字幕页面,因为它们返回响应代码 403。

JCh*_*ris 5

HTTP 状态码403 Forbidden表示:

服务器理解请求,但拒绝满足它。来源

服务器将您的脚本识别为非默认浏览器(Chrome、Firefox 等),并拒绝与其“对话”。经常看到网站这样做是为了避免刮刀,这正是您想要做的......

解决方法是user-agent在标题中设置 a ,如下所示:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import requests

url = "http://www.subscene.com"
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'}

response = requests.get(url, headers=headers)
print(response)  # <Response [200]>
Run Code Online (Sandbox Code Playgroud)

但是我建议您寻找提供某种 API 的站点,依靠抓取并不是最好的方法。