#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)