2017-01-07 3 views
-2

특정 페이지를 긁을 때 "urllib.error.HTTPError : HTTP Error 403 : Forbidden"오류가 표시되고 hdr = {"User-Agent': 'Mozilla/5.0"}과 같은 내용을 추가하는 것이 해결책입니다. 이.urllib.error.HTTPError : HTTP 오류 403 : 금지 됨

그러나 나는 긁어 모으려는 URL이 별도의 소스 파일에있을 때 작동하지 않을 수 있습니다. 어떻게/아래의 코드에 User-Agent를 추가 할 수 있습니까?

from bs4 import BeautifulSoup 
import urllib.request as urllib2 
import time 

list_open = open("source-urls.txt") 
read_list = list_open.read() 
line_in_list = read_list.split("\n") 

i = 0 
for url in line_in_list: 
    soup = BeautifulSoup(urllib2.urlopen(url).read(), 'html.parser') 
    name = soup.find(attrs={'class': "name"}) 
    description = soup.find(attrs={'class': "description"}) 
    for text in description: 
     print(name.get_text(), ';', description.get_text()) 
#  time.sleep(5) 
    i += 1 

감사합니다 :)

+0

'urllib' 문서를 읽으려고 한 적이 있습니까? 또는 ['requests'] (http://docs.python-requests.org/ko/master/)와 같이 좀 더 사용자 친화적 인 것을 사용하고 계십니까? – MattDMo

+0

예, 그래도 작동하지 않습니다.'hdr = { "User-Agent ':'Mozilla/5.0"}'변수를 추가하고 수프 라인을'soup = BeautifulSoup (urllib2. urlopen (url, headers = hdr) .read(), 'html.parser')'파이썬은 헤더의 뜻밖의 어조를 제공합니다. 어떤 생각? 감사합니다 – Espen

+0

당신은 내 코멘트를 읽지 않았다. ** 1. ** 질문하기 전에 [관련 문서] (https://docs.python.org/2/library/urllib2.html#urllib2.urlopen)를 읽으십시오.이 경우 함수에는'헤더가 없습니다. '매개 변수. ** 2. ** 내가 말했듯이 ([docs say] (https://docs.python.org/2/library/urllib2.html)), 대신에'requests'를 사용해야합니다. 요청이 std lib에없는 유일한 이유는 여전히 활성 개발 중이기 때문이며 관리자는 Python 릴리스 일정에 의존하기를 원하지 않습니다. 그걸 써. 너의 삶이 더 쉬워 질거야. – MattDMo

답변

1

당신은

import requests 
hdrs = {'User-Agent': 'Mozilla/5.0 (X11 Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36'}  
for url in line_in_list: 
    resp = requests.get(url, headers=hdrs) 
    soup = BeautifulSoup(resp.content, 'html.parser') 
    name = soup.find(attrs={'class': "name"}) 
    description = soup.find(attrs={'class': "description"}) 
    for text in description: 
     print(name.get_text(), ';', description.get_text()) 
#  time.sleep(5) 
    i += 1 

requests

사용하여 동일한 달성 할 수있다는 희망이 도움이!

+0

감사합니다. – Espen