【问题标题】:HTML Scraping with lxml and Requests使用 lxml 和请求进行 HTML 抓取
【发布时间】:2015-04-22 22:42:29
【问题描述】:

我正在像本教程 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 上...我按照教程中所说的使用 Google Chrome 进行操作,但与教程中的不同。任何人都可以帮助我获得正确的 XPath?谢谢大家!

【问题讨论】:

  • 您希望在 HTML 内容中定位哪一行?

标签: python xpath lxml


【解决方案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>

【讨论】:

  • 是的,但谷歌浏览器返回了那个。那我怎样才能得到正确的 XPath 呢?我想要该页面中的正确表格。
  • 我们要从表中定位哪一行?从 xpath 中删除 tbody 并重试。我不知道谷歌浏览器,我认为谷歌浏览器会自动插入tbody标签。
  • 看到“MAT 135”第二行了吗?我想要数字 0 的行。我想要那个号码。剩下的空缺,65号是总空缺。我想处理那个号码,看看是否还有空缺加入 MAT 135 课程,谢谢
  • @carlosza: not getting.. 有两行(tr标签)第一列(td标签)值为MAT 135,其第8列(td标签)有值65。我们想得到这些行(tr 标签)??或者你能从我的电子邮件 vivekbsable@gmail.com 上的这个 HTML 内容中剪下你想要的东西。如果可能的话,把这个 HTML 内容的预期输出传递给我
  • @VivekSable 感谢行 这将始终返回空列表,因为 HTML 内容中不存在 tbody 标记。。它解决了我的问题。
猜你喜欢
  • 1970-01-01
  • 2014-09-21
  • 2019-03-12
  • 2018-02-22
  • 2015-05-06
  • 1970-01-01
  • 1970-01-01
  • 2023-03-23
  • 1970-01-01
相关资源
最近更新 更多