在网站上使用python Beautiful Soup,不断收到此错误:urllib.error.HTTPError:HTTP Error 403:Forbidden

时间:2017-06-22 16:36:08

标签: python html beautifulsoup

这是我用来获取耐克服装数据的代码。

Path path = new Path();
path.addArc(float left, float top, float right, float bottom, float startAngle, float sweepAngle) 
// sample: addArc(0, 0, 50, 50, 90, 360);

然后错误看起来像这样:
urllib.error.HTTPError:HTTP错误403:禁止

如何打开和解析此HTML页面?

4 个答案:

答案 0 :(得分:1)

或者试试selenium webdriver。

from selenium import webdriver
from bs4 import BeautifulSoup as bs

browser = webdriver.Firefox()
url = 'http://store.nike.com/us/en_us/pw/mens-clothing/1mdZ7pu?ipp=120'
browser.get(url)
source = browser.page_source
soup = bs(source, "html.parser")
print(soup)

这对我有用,但只是一个新手:)

答案 1 :(得分:0)

试试这个:

{{1}}

AppURLopener(继承自.request.FancyURLopener类)提供了一些很好的工具来模仿浏览器,从而绕过了403:Forbidden错误。

希望这有帮助!

答案 2 :(得分:0)

另外,您可以尝试.options-bar { line-height: 50px; width: 100%; }

requests

答案 3 :(得分:0)

问题在于User-Agent。此网站会阻止指定的User-Agent,但无法在标题中指定任何User-Agent工作正常。

import urllib.request

#Base url for website
url = 'http://store.nike.com/us/en_us/pw/mens-clothing/1mdZ7pu?ipp=120'

# A lot of sites don't like the user agents of Python 3, so I specify one here
req = urllib.request.Request(url)
html = urllib.request.urlopen(req).read()
print(html)

但是如果您想要添加标题,我建议您使用requests。首先使用 - pip通过pip install requests安装软件包。

import requests

#Base url for website
url = 'http://store.nike.com/us/en_us/pw/mens-clothing/1mdZ7pu?ipp=120'

# A lot of sites don't like the user agents of Python 3, so I specify one here
html = requests.get(url, headers = {'User-Agent': 'Mozilla/5.0'})
print(html.text)

有关requests的详细信息,请参阅此page