Python 3.5 urllib.request 403 禁止错误

Posted

技术标签:

【中文标题】Python 3.5 urllib.request 403 禁止错误【英文标题】:Python 3.5 urllib.request 403 Forbidden Error 【发布时间】:2017-05-04 01:18:49 【问题描述】:
import urllib.request
import urllib
from bs4 import BeautifulSoup


url = "https://www.brightscope.com/ratings"
page = urllib.request.urlopen(url)
soup = BeautifulSoup(page, "html.parser")

print(soup.title)

我试图访问上述网站,但代码一直显示 403 Forbidden Error。

有什么想法吗?

C:\Users\jerem\AppData\Local\Programs\Python\Python35-32\python.exe "C:/Users/jerem/PycharmProjects/webscraper/url scraper.py" 回溯(最近一次通话最后): 文件“C:/Users/jerem/PycharmProjects/webscraper/url scraper.py”,第 7 行,在 page = urllib.request.urlopen(url) 文件“C:\Users\jerem\AppData\Local\Programs\Python\Python35-32\lib\urllib\request.py”,第 163 行,在 urlopen 返回 opener.open(url, 数据, 超时) 文件“C:\Users\jerem\AppData\Local\Programs\Python\Python35-32\lib\urllib\request.py”,第 472 行,打开 响应=方法(请求,响应) http_response 中的文件“C:\Users\jerem\AppData\Local\Programs\Python\Python35-32\lib\urllib\request.py”,第 582 行 'http', 请求, 响应, 代码, msg, hdrs) 文件“C:\Users\jerem\AppData\Local\Programs\Python\Python35-32\lib\urllib\request.py”,第 510 行,错误 返回 self._call_chain(*args) _call_chain 中的文件“C:\Users\jerem\AppData\Local\Programs\Python\Python35-32\lib\urllib\request.py”,第 444 行 结果 = 函数(*args) 文件“C:\Users\jerem\AppData\Local\Programs\Python\Python35-32\lib\urllib\request.py”,第 590 行,位于 http_error_default 引发 HTTPError(req.full_url, code, msg, hdrs, fp) urllib.error.HTTPError:HTTP 错误 403:禁止

【问题讨论】:

urllib2.HTTPError: HTTP Error 403: Forbidden的可能重复 【参考方案1】:
import requests
from bs4 import BeautifulSoup


url = "https://www.brightscope.com/ratings"
headers = 'User-Agent':'Mozilla/5.0'
page = requests.get(url)
soup = BeautifulSoup(page.text, "html.parser")

print(soup.title)

出来:

<title>BrightScope Ratings</title>

首先,使用requests 而不是urllib

然后,将headers添加到requests,否则网站将禁止你,因为默认的User-Agent是爬虫,网站不喜欢。

【讨论】:

你能解释一下为什么你建议使用requests而不是urllib吗?那么urllib2 呢?

以上是关于Python 3.5 urllib.request 403 禁止错误的主要内容,如果未能解决你的问题,请参考以下文章

在 Python 3.5 中使用 urllib 获取网页的最终重定向

python3.5中没有urllib2怎么处理?

Python 记录

python批量下载文件

关于Python爬虫 403的错误

Python Spider - urllib.request