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

时间:2016-12-22 16:45:17

标签: python-3.x web-scraping python-requests

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

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

1 个答案:

答案 0 :(得分:2)

HTTP状态代码403 Forbidden表示:

  

服务器理解请求,但拒绝履行请求。 Source

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

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

#!/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]>

但我建议你寻找一个提供某种API的网站,依靠抓取不是最好的方法。