Python 3, urllib ... Сброс соединения возможен? - PullRequest
2 голосов
/ 09 января 2011

В более широком масштабе моей программы цель приведенного ниже кода состоит в том, чтобы отфильтровать весь динамический HTML в исходном коде веб-страницы

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

try:
    deepreq3 = urllib.request.Request(deepurl3)
    deepreq3.add_header("User-Agent","etc......")
    deepdata3 = urllib.request.urlopen(deepurl3).read().decode("utf8", 'ignore')

Следующий код повторяется 3 раза, чтобы определить, является ли целевая веб-страница динамической (исходный код изменяется с интервалами) или нет.

Если страница динамическая, приведенный выше код повторяется еще 15 раз и пытается отфильтровать динамический контент.

ВОПРОС:

Хотя этот метод фильтрации работает в 80% случаев, некоторые страницы будут перезагружаться ВСЕ 15 раз, и ОСТАЕТСЯ динамическим кодом. ТЕМ НЕ МЕНИЕ. Если я вручную закрою оболочку Python и повторно выполню свою программу, динамического html, который не мог стряхнуть мой «метод обновления страницы», больше не будет ... он был заменен новым динамическим html, который мой «refresh-page» Метод не может избавиться. Поэтому мне нужно знать, что здесь происходит? Как перезапуск моей программы вызывает изменение динамического содержимого страницы. И, есть ли способ, любая команда «сбросить соединение», которую я могу использовать, чтобы воссоздать это ... без перезапуска моего приложения вручную.

Спасибо за ваш ответ.

UPDATE:

Я сделал небольшой исполняемый HTML-граббер, который я запускаю в цикле из основного скрипта. Это решает эту проблему, но мне все еще интересно, почему я должен был это сделать.

Ответы [ 2 ]

0 голосов
/ 15 января 2011

Я сделал небольшой исполняемый HTML-граббер, который я запускаю в цикле из основного скрипта. и использовать его для решения этой проблемы, но мне все еще любопытно, почему я должен был это сделать.

0 голосов
/ 11 января 2011

Попробуйте закрыть соединение после прочтения данных:

try:
    deepreq3 = urllib.request.Request(deepurl3)
    deepreq3.add_header("User-Agent","etc......")
    connection = urllib.request.urlopen(deepurl3)
    deepdata3 = connection.read().decode("utf8", "ignore")
    connection.close()
...