2014-01-18 2 views
0

У меня возникают проблемы, пытаясь соскрести данные из таблицы в URL:Python выскабливание XPath не работает с конкретными сайтами/таблицами

http://economia.uol.com.br/cotacoes/bolsas/indx-bovespa/?intraday&size=600

Это относится к внутридневным данным рынка. Основываясь на предыдущих примерах и теги XPATH предоставляемые поджигатель, я написал код, приведенный ниже, но оба tr_nodes и возвращаемые td_content пустые списки:

import urllib2 
from lxml import etree 
uol = urllib2.urlopen("http://economia.uol.com.br/cotacoes/bolsas/indx-bovespa/?intraday&size=600") 
t = uol.read() 
html = etree.HTML(t) 
tr_nodes = html.xpath(".//*[@id='main']/table/tbody/tr") 
td_content = [[td.text for td in tr.xpath('td')] for tr in tr_nodes] 

Я прочитал вопрос ниже от переполнения стека:

python scraping reuters site...bad xpath?

и попытался ее решением, приспособленное к моим потребностям:

import lxml 
import lxml.html 
import lxml.etree 

url = 'http://economia.uol.com.br/cotacoes/bolsas/indx-bovespa/?intraday&size=600' 

content = lxml.html.parse(url) 
item = content.xpath(".//*[@id='main']/table/tbody/tr/td") 
ticker = [thing.text for thing in item] 
print ticker 

произошла та же проблема. Фактически, когда я попытался написать весь контент url в текстовый файл, я не смог найти узлы td, которые я хотел очистить. Может быть, это динамическая таблица/форма, которую нельзя скрестить с библиотеками, которые я использовал, или это просто мое невежество? Заранее спасибо

ответ

1

При просмотре источника вы можете сообщить, что в текущем HTML-коде нет <table> элементов. Это означает, что источник, который захватывает Python, не имеет ни одного из элементов, которые вы ищете. Содержимое таблицы, вероятно, будет вставлено после загрузки страницы Javascript.

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

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