Веб-очистка и 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

Благодарю.

1 ответ

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

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

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

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

Другие вопросы по тегам