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

标签 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 中的唯一一个

我做错了什么?

最佳答案

/ 字符开头的 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")

关于python - 当我指定不解析整个页面时,Xpath 会解析整个页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36907688/

相关文章:

xpath - 如何使用 hxs.select 在 scrapy 中获取整个文档

python - 如何通过 Selenium 和 Python 单击文本为“根据 html 搜索”的按钮?

python - Qt 在 OSX 中与 skimage 相关的问题

python - Django:将新外键添加到现有模型,默认值为同一模型中的另一个外键

python - 带有自参数的类方法装饰器?

c# - Json和Xml序列化,哪个性能更好?

c# - 如何使用 C# 正确解析此 XML?

objective-c - RestKit 使用 setObjectMapping 从核心数据中删除旧数据

php - 使用 Xpath 获取第一个祖先

python - 对列表中的列表中的字典进行列表理解