Python urlopen HTTP错误

Python urlopen HTTP错误,python,beautifulsoup,urllib2,Python,Beautifulsoup,Urllib2,我试图打开古腾堡项目的一个页面,用BeautifulSoup编辑 import urllib2 from bs4 import BeautifulSoup url = "http://www.gutenberg.org/files/54801/54801-h/54801-h.htm" page = urllib2.urlopen(url) soup_packtpage=BeautifulSoup(page) print(soup_packtpage) 我在cloud9工作。我有以下错误:

我试图打开古腾堡项目的一个页面,用BeautifulSoup编辑

import urllib2
from bs4 import BeautifulSoup

url = "http://www.gutenberg.org/files/54801/54801-h/54801-h.htm"
page = urllib2.urlopen(url)
soup_packtpage=BeautifulSoup(page)

print(soup_packtpage)
我在cloud9工作。我有以下错误:

Traceback (most recent call last):
File "soup.py", line 5, in <module>
page = urllib2.urlopen(url)
File "/usr/lib/python2.7/urllib2.py", line 127, in urlopen
return _opener.open(url, data, timeout)
File "/usr/lib/python2.7/urllib2.py", line 410, in open
response = meth(req, response)
File "/usr/lib/python2.7/urllib2.py", line 523, in http_response
'http', request, response, code, msg, hdrs)
File "/usr/lib/python2.7/urllib2.py", line 448, in error
return self._call_chain(*args)
File "/usr/lib/python2.7/urllib2.py", line 382, in _call_chain
result = func(*args)
File "/usr/lib/python2.7/urllib2.py", line 531, in http_error_default
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 403: Forbidden
回溯(最近一次呼叫最后一次):
文件“soup.py”,第5行,在
page=urlib2.urlopen(url)
文件“/usr/lib/python2.7/urllib2.py”,urlopen中的第127行
return\u opener.open(url、数据、超时)
文件“/usr/lib/python2.7/urllib2.py”,第410行,打开
响应=方法(请求,响应)
http_响应中的文件“/usr/lib/python2.7/urllib2.py”,第523行
“http”、请求、响应、代码、消息、hdrs)
文件“/usr/lib/python2.7/urllib2.py”,第448行出错
返回自我。调用链(*args)
文件“/usr/lib/python2.7/urllib2.py”,第382行,在调用链中
结果=func(*args)
文件“/usr/lib/python2.7/urllib2.py”,第531行,默认为http\u error\u
raise HTTPError(请求获取完整url(),代码,消息,hdrs,fp)
urllib2.HTTPError:HTTP错误403:禁止

怎么了?

您应该尝试使用请求包

在python 3.6中,这对我来说很好

import requests
from bs4 import BeautifulSoup as bs4

url = "http://www.gutenberg.org/files/54801/54801-h/54801-h.htm"
r = requests.get(url)
#page = urllib3.urlopen(url)
soup_packtpage = bs4(r.text, 'html.parser')

print(soup_packtpage)

paragrapghs = soup_packtpage.findAll("p")
print(paragrapghs)

f = open("guttenberg_book.html", 'a', encoding="utf-8")
f.write(str(paragrapghs))
f.close()

我使用BS4添加了一个打印段落,让您开始。。这将仅输出书本文本:)

您应该尝试使用requests包

在python 3.6中,这对我来说很好

import requests
from bs4 import BeautifulSoup as bs4

url = "http://www.gutenberg.org/files/54801/54801-h/54801-h.htm"
r = requests.get(url)
#page = urllib3.urlopen(url)
soup_packtpage = bs4(r.text, 'html.parser')

print(soup_packtpage)

paragrapghs = soup_packtpage.findAll("p")
print(paragrapghs)

f = open("guttenberg_book.html", 'a', encoding="utf-8")
f.write(str(paragrapghs))
f.close()
我使用BS4添加了一个打印段落,让您开始。。这将仅输出书本文本:)

尝试请求并添加标题。它在Python2.7.13中适用于我


尝试请求并添加标题。它在Python 2.7.13中适用于我,这是一个HTTP错误,而不是Python错误。这是说你不能提出那个要求。可能缺少标头,如Cookie或API凭据。我无法重现此问题。我得到一个巨大的打印输出。你得到403,因为它需要设置cookies。第一次尝试时,我进入了~welcome_陌生人页面,第二次尝试时,请求成功。您看到了吗?这是HTTP错误,不是python错误。这是说你不能提出那个要求。可能缺少标头,如Cookie或API凭据。我无法重现此问题。我得到一个巨大的打印输出。你得到403,因为它需要设置cookies。第一次尝试时,我进入了~welcome_陌生人页面,第二次尝试时,请求成功。这是你看到的东西吗?