2017-12-31 11 views
-1
import re 
import urllib.request 

url='''https://www.nseindia.com/live_market/dynaContent/live_watch/get_quote/GetQuote.jsp?symbol=''' 
Stock = input('Enter the stock name: ').upper() 
url = url + Stock 
comp_info = urllib.request.urlopen(url).read() 

금지 된 오류가 발생하여 코드의 문제를 이해할 수 없습니다. ITC를 입력하려고합니다.HTML 구문 분석 금지 된 오류

+0

흠, 이상한. 또한 응답 코드 403 때문에'request.urlopen'으로이 URL을 열 수는 없지만'requests.get()'과 잘 작동합니다. –

+1

https://stackoverflow.com/questions/16627227/http-error-403-in-python-3-web-scraping –

+0

[파이썬 3 웹 스크래핑에서 HTTP 오류 403] 가능한 복제본 (https://stackoverflow.com)/questions/16627227/http-error-403-python-3-web-scraping) – usr2564301

답변

2

코드가 정확합니다. 이 리소스가 (요청이 브라우저에서 전송되었는지 여부를 확인하여) 가장 간단한 방법으로 봇을 차단하려고 시도하는 것 같습니다.

이 문제를 해결하기 위해 적절한 header와 더미 user agent을 설정할 수 있습니다

request = urllib.request.Request(url, 
           headers={'User-Agent': 'Browser'}) 
urllib.request.urlopen(request).read() 
+0

참조 용으로이 링크 추가 https://docs.python.org/3.4/howto/urllib2.html#headers –

+0

감사합니다. ,하지만이 코드는 무엇을 얻지 못합니까? 요청 = urllib.request.Request (url, 헤더 = { '사용자 에이전트': '브라우저'})] ... 당신은 간단한 단어로 설명 할 수 있습니까 –

+0

@RajatGarg this HTTP 헤더를 Request 객체에 설정하는 코드가 있습니다. 헤더의 이름은 "User-Agent"이고 값은 "Browser"입니다. 브라우저 동작을 에뮬레이트하기위한 임의의 문자열입니다. 아마도 User-Agent 헤더 및/또는 일반적으로 HTTP 헤더에 대해 읽어야합니다. –