Отказано в доступе к CrunchBase при использовании заголовка пользовательского агента

#python #web-scraping #beautifulsoup #python-requests #wget

#python #веб-очистка #beautifulsoup #python-запросы #wget

Вопрос:

Я пытаюсь создать Crunch Base, чтобы найти общую сумму финансирования для определенных компаний. Вот ссылка на пример.

Сначала я пытался просто использовать beautiful soup, но я продолжаю получать сообщение об ошибке:

Доступ к этой странице был запрещен, поскольку мы считаем, что вы используете средства автоматизации для просмотра nwebsite.

Итак, я посмотрел, как подделать посещение браузера, и я изменил свой код, но я все равно получаю ту же ошибку. Что я делаю не так??

 import requests
from bs4 import BeautifulSoup as BS


url = 'https://www.crunchbase.com/organization/incube-labs'
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) 
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'}

response = requests.get(url, headers=headers)
print(response.content)
 

Комментарии:

1. Для веб-сайтов доступно несколько вариантов определения того, просматриваете ли вы сайт на самом деле или используете скребок, и вы столкнулись с одним из них. Вы могли бы попробовать эмулировать фактический сеанс браузера, чтобы еще больше походить на реального пользователя (например, модули, такие как selenium), или продолжить изучение HTTP-заголовков, отправляемых в запросе, когда вы делаете это в браузере (как вы делали с user agent — просто расширьте эту идею) и продолжайте включать их до тех пор, покавы больше не получаете жалобу.

Ответ №1:

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

 import requests
from bs4 import BeautifulSoup as BS


url = 'https://www.crunchbase.com/organization/incube-labs'
headers = {"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:66.0) Gecko/20100101 Firefox/66.0", "Accept": "text/html,application/xhtml xml,application/xml;q=0.9,*/*;q=0.8", "Accept-Language": "en-US,en;q=0.5", "Accept-Encoding": "gzip, deflate", "DNT": "1", "Connection": "close", "Upgrade-Insecure-Requests": "1"}

response = requests.get(url, headers=headers)
print(response.content)