2015-09-17 1 views
1

мне нужно, чтобы получить некоторые номера с этого сайтаКак я могу заставить python ждать, пока веб-страница не загрузит некоторые данные, которые я пытаюсь получить?

http://www.preciodolar.com/

Но данные мне нужно, занимает немного времени для загрузки и показывает сообщение о «засаде», пока она полностью нагрузки.

Я использовал найти все и некоторые регулярные выражения для получения данных, которые мне нужны, но когда я выполняю, python дает мне сообщение «wait», которое появляется перед загрузкой данных.

Есть ли способ сделать python 'wait' пока все данные не будут загружены? мой код выглядит так,

import urllib.request 
from re import findall 

def divisas(): 

pag = urllib.request.urlopen('http://www.preciodolar.com/') 
html = str(pag.read()) 
brasil = findall('<td class="usdbrl_buy">(.*?)</td>',html) 
return brasil 
+1

Для этого вам действительно нужно использовать [beautifulsoup] (http://www.crummy.com/software/BeautifulSoup/). – IanAuld

+0

Вы должны использовать [селен] (http://www.seleniumhq.org/) –

ответ

0

Это происходит потому, что страница генерируется с помощью JavaScript. Вы получаете полный HTML-код, но JavaScript обрабатывает изменение DOM и отображение информации. У вас есть две возможности:

  1. Попробуйте интерпретировать JavaScript (не просто). Есть много questions about this in stack overflow already.
  2. Найдите URL-адрес, на котором страница попадает в AJAX, чтобы получить фактические данные и использовать их.

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

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