在其他标记之后(外部)发生的html标记内刮取特定文本

时间:2014-02-02 06:46:19

标签: python select xhtml scrapy

我目前正在使用scrapy进行python并尝试从网站检索信息,其源代码与此类似:

    <tr>
    <th scope="row">Date</th>
    <td>10/17/2001</td>
    <td></td>
    </tr>
    <tr>
    <th scope="row">Title</th>
    <td>Harry Potter</td>
    <td></td>
    </tr>
    <tr>
    <th scope="row">Author</th>
    <td>J.K. Rowling</td>
    <td></td>
    </tr>

Harry Potter 是我想要检索的文本字符串。但是,我无法使用传统的Xpath分隔符,因为整个页面中有多个此代码段的实例(只有th / td标记之间有不同的文本 - 如上面的代码所示)。所有这些标签都以scope =“row”属性开头。

此外,我不能只抓取标签的第x个实例,因为我正在抓取的每个网页都有可变数量的实例。

有没有办法获取 scrapy 中特定文本字符串(如标题)后面的文本(例如 Harry Potter )?

2 个答案:

答案 0 :(得分:0)

试一试。一般来说,学会成为XPath。

/tr/td/text() 

答案 1 :(得分:0)

您可能想尝试:

//tr/th[@scope="row"][.="Title"]/following-sibling::td[1]/text()