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 禁止错误的主要内容,如果未能解决你的问题,请参考以下文章