2015-02-24 48 views
0

我在做这个教程,http://docs.python-guide.org/en/latest/scenarios/scrape/,要废弃一个html表,并且效果不好。使用lxml和请求进行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?多谢你们!

+0

你要哪行的HTML内容进行定位? – 2015-02-24 15:48:05

回答

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

是的,但谷歌浏览器返回。我怎样才能得到正确的XPath呢?我想从该页面获得一张正确的表格。 – carlosza 2015-02-24 15:48:59

+0

我们想要从表格中选择哪一行?从xpath中移除'tbody'并重试。我不知道Google Chrome,我认为Google Chrome会自动插入'tbody'标签。 – 2015-02-24 15:52:47

+0

请参阅'MAT 135'第二行?我想要0号的行。我想要那个号码。剩下的是空缺,65号是全部空缺。我想处理这个数字,看看是否有空缺尚未加入MAT 135类,谢谢 – carlosza 2015-02-24 15:58:28