2017-02-20 3 views
0

웹 사이트에서 데이터를 가져 오기위한 스크립트를 작성했습니다. 하지만 여러 번 지나면 내가 요청할 때 금지 된 403이 표시됩니다.웹 스크래핑 및 403 금지 : 웹 스크레이퍼가 웹 사이트에 의해 차단되었으므로 요청하려면 어떻게해야합니까?

이 문제를 해결하려면 어떻게해야합니까?

내 코드는 다음과 같습니다 :

import requests, bs4 
import csv 

links = [] 
with open('1-432.csv', 'rb') as urls: 
    reader = csv.reader(urls) 
    for i in reader: 
     links.append(i[0]) 
info = [] 
nbr = 1 

for url in links: 

    # Problem is here. 
    sub = [] 
    r = requests.get(url) 
    soup  = bs4.BeautifulSoup(r.text, 'lxml') 
    start = soup.find('em') 
    forname = soup.find_all('b') 
    name = [] 


    for b in forname: 
     name.append(b.text) 
    name = name[7] 
    sub.append(name.encode('utf-8')) 
    for b in start.find_next_siblings('b'): 
     if b.text in ('Category:', 'Website:', 'Email:', 'Phone'): 
      sub.append(b.next_sibling.strip().encode('utf-8')) 
    info.append(sub) 
    print('Page ' + str(nbr) + ' is saved') 
    with open('Canada_info_4.csv', 'wb') as myfile: 
     wr = csv.writer(myfile,quoting=csv.QUOTE_ALL) 
     for u in info: 
      wr.writerow(u) 
    nbr += 1 

내가 웹 사이트에 요청을 만들기 위해 무엇을해야하는지. 예제 URL은 http://www.worldhospitaldirectory.com/dr-bhandare-hospital/info/43225

입니다. 감사합니다.

+0

차단 된 경우 차단됩니다. 대부분의 웹 사이트에서는 근근이 살아가는 모습을 흐릿하게 보입니다. 당신은 아마도 자신의 이용 약관을 위반하는 것입니다 – e4c5

+1

정말 프로그래밍 질문이 아니기 때문에 나는이 질문을 주제로 끝내기로했다. – e4c5

답변

0

문제가 될 수있는 여러 가지가 있으며, 블랙리스트 정책에 따라 수정하기에 너무 늦을 수 있습니다.

적어도 이렇게 긁는 것은 일반적으로 거시기 행동으로 간주됩니다. 너는 그들의 서버를 망치고있어. 메인 루프 안에 time.sleep(10)을 넣으십시오.

두 번째로 사용 도구를 설정하십시오. here 또는 here

더 나은 해결책은 사용할 수있는 API가 있는지 확인하는 것입니다.

+0

대단히 감사합니다. 나는 시도 할 것이다. –