2013-07-30 2 views
1

Im пытается собрать все ссылки с веб-страницы с помощью запросов, Beautifulsoup4 и SoupStrainer в Python3.3. Для написания моего кода im с помощью Komodo Edit 8.0, а также пусть мои скрипты запускаются в Komodo Edit. До сих пор все работает отлично, но на некоторых веб-страниц, это происходит, что им получить всплывающее окно со следующим ВниманиеСсылка Скребок с запросами, bs4. Получение предупреждения: невосприимчивый скрипт

Warning unresponsive script 

A script on this page may be busy, or it may have stopped responding. You can stop the script 
now, or you can continue to see if the script will complete. 

Script: viewbufferbase:797 

Тогда я могу выбрать, если я хочу продолжить или остановить сценарий.

Здесь немного фрагмент кода:

try: 
    r = requests.get(adress, headers=headers) 
    soup = BeautifulSoup(r.text, parse_only=SoupStrainer('a', href=True)) 
    for link in soup.find_all('a'): 

     #some code 

except requests.exceptions.RequestException as e: 
    print(e) 

Мой вопрос: что является причиной этой ошибки. Является ли мой скрипт python слишком долго на веб-странице или это скрипт на веб-странице, который я читаю? Я не могу думать о последнем, потому что технически я не выполняю скрипты на странице правильно? Или может быть, это мое плохое интернет-соединение?

О, и еще один маленький вопрос, с приведенным выше фрагментом кода am im загрузка изображений или просто простой html-код? Потому что иногда, когда я смотрю на мой статус подключения для меня, это слишком много данных, которые я получаю только для запроса простого HTML-кода? Если да, то как я могу избежать загрузки таких материалов и как вообще возможно избежать загрузки с запросами, потому что иногда бывает, что моя программа заканчивается на странице загрузки.

Большое спасибо!

+0

Вы начинаете идти по этому углу на верхнем уровне? –

+0

Технически я проверяю только одну страницу за раз. Если одна страница завершена, она продолжается с проверкой другой найденной ссылки. – zwieback86

+0

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

ответ

0

Проблема может быть либо длительным временем загрузки сайта, либо циклом на графике ссылок вашего сайта, то есть на странице 1 (Главная страница) есть ссылка на страницу2 (Условия обслуживания), которая, в свою очередь, имеет ссылку на страницу1. Вы можете попробовать this snippet, чтобы узнать, сколько времени потребуется, чтобы получить ответ с веб-сайта (включая использование фрагмента).

Что касается последнего вопроса:

Я уверен, что requests не анализирует содержимое вашего ответа (за исключением .json() метода). То, что вы можете испытывать, - это ссылка на ресурс, например <a href="http://www.example.com/very_big_file.exe">Free Cookies!</a>, которую вы увидите в сценарии. requests есть механика, чтобы встретить такой случай, см. this для справки. Кроме того, вышеупомянутый метод позволяет проверять заголовок Content-Type, чтобы убедиться, что вы загружаете страницы, которые вас интересуют.