перепросмотр при использовании BeautifulSoup в colab, но не локально - PullRequest
0 голосов
/ 09 января 2020

Я написал скрипт для очистки данных из div и возврата логического значения, если в классе div существует заранее заданная строка, все отлично работает локально. Однако, когда я копирую код в блокнот colab, сценарий переходит к ReCaptcha и возвращает код состояния 403.

Мой код указан ниже:

def stock_checker(listofurls):

       headers = {
       'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like 
        Gecko) Chrome/79.0.3945.88 Safari/537.36"
        }

       stock_level = []

       for target_url in tqdm(listofurls): 
           print(target_url)
           query = requests.get(target_url,headers=headers).text
           html = soup(query, "html.parser")
           soup_result = html.find("div", {"class": "product-details__options-basket"}).text
           stock_bool = "Out of Stock" if "Out of Stock" in str(soup_result) else "In Stock"
           stock_level.append(stock_bool)

        return pd.DataFrame({"URls" : listofurls, "In Stock" : stock_level})

print(stock_checker(myurllist))

Возвращается html для ReCaptcha и, следовательно, div, на который я ссылаюсь ниже, не существует, и код ошибки.

Есть идеи, почему это происходит в colab, а не локально? и / или как решить проблему?

Ps - я помещаю его в colab, чтобы другие могли использовать его, просто запустив код без необходимости кодирования.

1 Ответ

0 голосов
/ 09 января 2020

RE: "почему это происходит?" -

Обезглавленные браузеры часто используются для злоупотреблений, и, следовательно, чаще всего проходят тесты на злоупотребление, такие как капчи. Вероятность выше при использовании диапазонов общих IP-адресов, типичных для облачных провайдеров.

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

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