使用lxml和请求进行HTML Scraping

时间:2015-02-24 15:42:48

标签: python xpath lxml

我就像这个教程http://docs.python-guide.org/en/latest/scenarios/scrape/一样,废弃了一个html表,但效果不好。

我的代码:

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上......我这样做就像教程中说的那样使用谷歌Chrome,但它不像教程那样。任何人都可以帮助我获得正确的XPath?谢谢你们!

1 个答案:

答案 0 :(得分:1)

在HTML内容中,没有tbody标记。

在代码中,我们正在考虑使用tbody标记来查找目标标记。

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

这将始终返回空列表,因为HTML内容中不存在tbody标记。

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>