2015-02-24 2 views
0

Я делал как этот учебник, http://docs.python-guide.org/en/latest/scenarios/scrape/, чтобы отказаться от таблицы html, и это не работает.HTML скребок с lxml и запросами

Мой код:

import requests 
from lxml import html 

page = requests.get('http://www.dti.ufv.br/horario/horario.asp?ano=2015&semestre=1&depto=MAT') 
tree = html.fromstring(page.text) 

vaga = tree.xpath('/html/body/center/table/tbody/tr[2]/td/table[2]/tbody/tr[108]/td[9]') 
print vaga 

Я думаю, что проблема с XPath ... Я сделал это как учебник сказал с помощью Google Chrome, но это не так, как в учебнике. Кто-нибудь может помочь мне получить правильный XPath? Спасибо, парни!

+0

Какие строки вы хотите настроить таргетинг на содержание HTML? –

ответ

1

В HTML-контенте нет знака tbody.

В коде мы рассматриваем tbody тег, чтобы найти целевой тег.

vaga = tree.xpath('/html/body/center/table/tbody/tr[2]/td/table[2]/tbody/tr[108]/td[9]') 

Это всегда возвращает пустой список, потому что tbody тег не присутствует в содержании HTML.

содержание Html:

<table width="760" border="0" cellspacing="0" cellpadding="0"> 
    <tr> 
     <td><img src="img/topo.jpg" width="760" height="101"></td> 
    </tr> 
    <tr> 
     <td background="img/conteudo.jpg"><p align="right"><img src="img/setas_voltar.jpg" width="8" height="7"> <font size="1"><strong><a href="javascript:history.back();">voltar</a>&nbsp;</strong></font></p> 
     <TABLE WIDTH=100% BORDER=0 CELLSPACING=1 CELLPADDING=1> 
     <TR> 
      <TD align=center> <br> 
       <font color="Black" size=2><b> Hor&aacute;rio de Aulas 2015/1</b></font><br>   </TD> 
     </TR> 
     </TABLE> 
+0

Да, но Google Chrome вернул это. Как я могу получить правильный XPath? Я хочу получить правую таблицу с этой страницы. – carlosza

+0

, какую строку мы хотим настроить из таблицы? удалите 'tbody' из xpath и повторите попытку. Я не знаю о Google Chrome, я думаю, Google Chrome будет автоматически вставлять тег tbody. –

+0

Посмотрите 'MAT 135' второй ряд? Я хочу число 0. Я хочу это число. Остаются вакансии, а число 65 - это общие вакансии. Я хочу обработать этот номер, чтобы увидеть, есть ли еще вакансии, чтобы присоединиться к классу MAT 135, спасибо – carlosza

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