2017-02-10 6 views
0

Я хочу, чтобы извлечь некоторые значения из веб-сайта и конкретные элементыПопадая пустые возвращается с Python веб-соскоб

<div class="float_l dcMsg"> 
    <div class="float_l" style="margin-right: 5px; min-width: 105px;">Slow Stochastic(20,5)</div> 
    <div class="float_l ind-color-box" style="margin-right: 5px; background: rgb(242, 38, 31);"></div> 
    <div class="float_l" style="margin-right: 5px; min-width: 105px;">%K: 33.996</div> 
    <div class="float_l ind-color-box" style="margin-right: 5px; background: rgb(0, 255, 0);"></div> 
    <div class="float_l" style="margin-right: 5px; min-width: 105px;">%D: 18.393</div> 
</div> 

Значения я хочу находятся на 4-й строке (т.е. 33.996) и 6-й линии (т.е. 18,393).

Эти цифры, которые я хочу, на самом деле находятся на динамической диаграмме, но я не знаю, является ли это из javascript. Число будет обновляться до последнего значения после того, как я нажал определенную кнопку на веб-странице, и соответственно изменится значение чисел из элемента. Кроме того, когда я наводил курсор на график, цифры меняются.

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

Я пробовал этот код, но он возвращает [].

import urllib 
import re 

htmltext = urllib.urlopen("http://www.example.com").read() 

regex = '<div class="float_l" style="margin-right: 5px; min-width: 105px;">(.+?)</div>' 

pattern = re.compile(regex) 

results = re.findall(pattern,htmltext) 

print results 

Я также попытался использовать BeautifulSoup, но он также возвращает [].

import bs4 as bs 
import urllib 

sauce = urllib.urlopen('http://www.example.com').read() 

soup = bs.BeautifulSoup(sauce,'html.parser') 

results = soup.findAll('div',style='margin-right: 5px; min-width: 105px;') 

print results 
+2

Основываясь на информации, которую вы дали, вы * возможно * хотите использовать [Селен] (http://stackoverflow.com/questions/17540971/how-to-use -selenium-с-Python). BeautifulSoup не обрабатывает динамически загруженные или измененные значения – Wondercricket

+0

Ha! .... У меня нет ничего полезного, но мне нужно сказать привет. – Kelvin

ответ

0

Selenium может быть хорошей комбинацией с этим, но его выполнимость.

Может быть что-то вроде этого:

In [30]: for el in soup.findAll('div'): 
    ...:  if el.has_attr('style') and 'margin-right: 5px' in el.attrs['style'] and el.attrs['class'] == ['float_l']: 
    ...:   print el 
    ...: 
    ...: 
<div class="float_l" style="margin-right: 5px; min-width: 105px;">Slow Stochastic(20,5)</div> 
<div class="float_l" style="margin-right: 5px; min-width: 105px;">%K: 33.996</div> 
<div class="float_l" style="margin-right: 5px; min-width: 105px;">%D: 18.393</div> 
+0

Это не возвращает то, что я хочу. Я думаю, что я попытаюсь использовать селен и спасибо за вашу помощь. – kelvin