2015-04-01 3 views
0

Я пытаюсь открыть url с помощью механизации, но не просто открыть его и сразу же закрыть. Я хочу, чтобы он открыл URL-адрес, а затем подождите 7 минут, затем закройте URL-адрес.Использовать механизацию с python

то, что я пытаюсь сделать:

import mechanize 
import cookielib 
import time 


url='http://google.com/' 
op = mechanize.Browser() 

cj = cookielib.LWPCookieJar() 
op.set_handle_robots(False) 
op.set_handle_equiv(True) 
op.set_handle_referer(True) 
op.set_handle_redirect(True) 
op.set_cookiejar(cj) 
op.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=7) 

op.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')] 

op.open(url) 
time.sleep(7) 

print op.geturl() 

, но не работает. как мне это сделать?

thnx.

+1

Сон занимает несколько секунд, чтобы спать, а не минуты. –

+0

@ap ОК, но это не сработало с механизацией – deounix

+1

Не думаю, что тогда я понимаю вопрос. Сон в течение 7 минут с помощью 'time.sleep (420)'. Что не работает, если не так? Каким образом это не работает специально с Mechanize? –

ответ

2

mechanize - это инструмент для выполнения HTTP-запроса/ответа, только с немного большей способностью действовать как браузер, чем такие вещи, как urllib.

http (по большей части) без гражданства - вы не держите открытую веб-страницу в том смысле, о котором вы, кажется, думаете. Соединение было закрыто к моменту возврата «open».

Вы получаете домашнюю страницу Google, возвращая объект из механизации, представляющий этот ответ, ожидающий 7 секунд, а затем запрашивая URL-адрес, привязанный к ответу.

Я действительно запускал ваш код, и в этой степени он работает.

set_handle_refresh и HTTPRefreshProcessor должны появиться в игре, когда веб-страница имеет «обновить» мета, которая заставляет ее перезагружаться через определенное время. Я считаю, что параметр, который вы дали (7 секунд, а не минуты, снова), является максимальным временем механизации, которое будет означать между обновлениями.

Но в любом случае домашняя страница Google не обновляется, я не думаю, что это ничего не делает.

Вы можете посмотреть HTTP-Keep-Alive/Persistent connections, чтобы узнать, есть ли что-то, что вы хотите, хотя даже соединения keep-alive не являются действительно страницами, открытыми из POV клиента.

 Смежные вопросы

  • Нет связанных вопросов^_^