当我指定不解析时,Xpath解析整个页面

时间:2016-04-28 07:10:30

标签: python xml xpath

我正在使用python和XPath解析网站。

我要做的是从<a>

中提取href

所以这就是XML(页面):

<div id="post">
  <div align="center">
    <table>
      <tbody>
        <tr>
          <td>
          <td>
            <a href="test01">
        <tr>
          <td>
        <tr>
          <td>
  <div align="center">
    <table>
      <tbody>
        <tr>
          <td>
          <td>
            <a href="test01">
        <tr>
          <td>
        <tr>
          <td>

这是我做的代码:

posts = page.xpath("//div[@id='posts']/div[@align='center']")
for post in posts :
  print post.xpath("//table/tr[1]/td[2]/a/@href")

但问题是,我最终得到posts的每个href,而不是来自post的单个

我做错了什么?

1 个答案:

答案 0 :(得分:1)

/字符开头的XPath意味着它将从文档根节点开始。要从上下文节点创建相对XPath,您需要在.之前放置/

所以你的代码应该是:

posts = page.xpath("//div[@id='posts']/div[@align='center']")
for post in posts:
  print post.xpath(".//table/tr[1]/td[2]/a/@href")