2017-02-20 37 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 is http://www.worldhospitaldirectory.com/dr-bhandare-hospital/info/43225

Спасибо.

+0

если вы заблокированы, вы заблокированы. Большинство веб-сайтов смутно смотрят на соскабливание. вы, вероятно, нарушаете их условия использования – e4c5

+1

Я голосую, чтобы закрыть этот вопрос как не по теме, потому что это не вопрос программирования – e4c5

ответ

0

Существует много разных вещей, которые могут быть проблемой, и в зависимости от того, что их политика в черном списке может быть слишком поздно исправлять.

По крайней мере, соскабливание, как это, как правило, считается поведением. Вы забиваете свой сервер. Попробуйте положить time.sleep(10) внутри основного цикла.

Во-вторых, попробуйте настроить свои пользовательские агенты. См. here или here

Лучшее решение, хотя было бы посмотреть, есть ли у них API, который вы можете использовать.

+0

Большое спасибо. Я попробую. –