weixin_40825517
罗家马德里球迷
采纳率22.2%
2019-03-15 23:43

为什么xpath()方法就提取不了a标签中的href属性内容呢?

我的代码是这样的:
方案一(详细版):

file = response.xpath('//*[@id="main-xm-content"]/table/tbody/tr[2]/td/table/tbody/tr[3]/td/table/tbody/tr/td/table/tbody/tr[3]/td[2]/a/@href').extract()

方案二(精简准确版):

file = response.xpath(''//div[@id="main-xm-content"]/table//table//table//table//a//@href')

网页结构大致是这样的:

<table width="900" border="0" cellspacing="0" cellpadding="0">
<tbody>
    <tr>...</tr>
    <tr>...</tr>
    <tr>
        <td width="25">&nbsp;</td>
        <td height="20">
                    <a href="this_is_a_link.gif">这是文本内容.pdf</a>
            </td>
        </tr>
    </tbody>
</table>

但是两种操作的结果不约而同地都是这样的:

>>> file
>>>[]

我很纳闷,这个办法用在其他网页都没出过问题,怎么一到这里就提取不了了呢?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

3条回答

  • weixin_40825517 罗家马德里球迷 2年前

    问题已被解决,原因应该是:
    1、模糊定位不准确,应尽量寻找临近且稳定的标签;
    2、详细定位不可靠,尤其是

    标签,一般认为在xpath可直接忽视,因为网页源代码往往原来是没有此类标签的,仅仅是网页生成后才出现。
    点赞 1 评论 复制链接分享
  • junbs junbs 2年前

    xpath匹配规则改成这样试试

    //a[contains(@href,“this_is_a_link.gif”)]/@href
    
    点赞 评论 复制链接分享
  • ddr89 ddr89 2年前

    你先把response里的content 打印出来看看。有时候会和你用浏览器看到的东西不一样

    点赞 评论 复制链接分享