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

为什么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
>>>[]

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

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

标签,一般认为在xpath可直接忽视,因为网页源代码往往原来是没有此类标签的,仅仅是网页生成后才出现。

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

xpath匹配规则改成这样试试

//a[contains(@href,“this_is_a_link.gif”)]/@href