Веб-очистка и 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, который вы можете использовать.