2017-06-22 18 views
1

ナイキの服装データを取得するために使用しているコードは次のとおりです。ウェブサイト上のPython Beautiful Soupを使用して、このエラーが発生する:urllib.error.HTTPError:禁止されたHTTPエラー403:

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, headers={'User-Agent': 'Mozilla/5.0'}) 
html = urllib.request.urlopen(req).read() 

そしてエラーは次のようになります。
urllib.error.HTTPError:HTTPエラー403:禁断の

がどのように開いて、このHTMLページを解析することができますか?

+1

'HTML = urllib.request.urlopen(URL).read()'しかしただ初心者には罰金 –

答えて

1

またはseleniumウェブドライブを試してください。

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) 

これは私のために働いた、:)

0

はこれを試してみてください:禁断のエラー:(.request.FancyURLopenerクラスから継承)

import urllib.request 

class AppURLopener(urllib.request.FancyURLopener): 
    version = "Mozilla/5.0" 

opener = AppURLopener() 
response = opener.open('http://store.nike.com/us/en_us/pw/mens-clothing/1mdZ7pu?ipp=120') 
print(response.read()) 

AppURLopenerは、ブラウザを模倣するため、403をバイパスするためにいくつかの素晴らしいツールを提供しています。

希望すると便利です。

0

requestsを試すこともできます。

>>> import requests 
>>> page = requests.get('http://store.nike.com/us/en_us/pw/mens-clothing/1mdZ7pu?ipp=120').content 
+0

はあなたビルに感謝作品! –

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を使用します。このpageを参照してください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) 

+0

助けてくれてありがとう! –

+0

@AbhikNagようこそ。ところで、答えが助けられたら、あなたは答えを受け入れないでください。 –

関連する問題