带Scrapy节点的XPath以\ n开头

时间:2015-08-07 19:08:50

标签: python xpath scrapy

我在html上使用scrapy,如:

<td nowrap="" valign="top" align="right">
    <br>
    Text is here.
    <br>
    Other text is here
    <br>
</td>

td [1] / text()[1]给了我:

(empty line)
Text is here.

我已经尝试了normalize-space,即normalize-space(td [1] / text()[1]),当我在我的firefox扩展中测试时,它可以工作,但在scrapy中没有。我认为scrapy会被\ n绊倒并且它跳过(或者只占用节点的第一行,这是什么都没有)。我也尝试了一些“前面”和“后面”代码,但我认为它可能被认为是一个元素,我的DOM说nodeValue =“\ nText是在这里”任何想法?,

1 个答案:

答案 0 :(得分:1)

提取每个文本,通过索引获取所需的文本。例如:

response.xpath("//table[@id='myid']/tr[1]/td[1]//text()")[1]

来自Scrapy Shell的演示:

$ scrapy shell http://www.trobar.org/troubadours/coms_de_peiteu/guilhen_de_peiteu_01.php
In [1]: table = response.xpath("//table")[2]
In [2]: td = "".join(table.xpath(".//td[1]//text()").extract())
In [3]: print(td)

Companho, farai un vers qu'er covinen,
Et aura-i mais de foudatz no-y a de sen,
Et er totz mesclatz d'amor e de joy e de joven.

E tenguatz lo per vilan qui no-l enten,
O dins son cor voluntiers non l'apren:
Greu partir si fai d'amor qui la troba a talen.

Dos cavalhs ai a ma sselha, ben e gen,
Bon son et adreg per armas e valen,
E no-ls puesc amdos tener, que l'us l'autre non cossen.

Si-ls pogues adomesjar a mon talen,
Ja no volgr'alhors mudar mon garnimen,
Que meils for'encavalguatz de nuill ome viven.

Launs fon dels montaniers lo plus corren,
Mas aitan fer' estranhez'a longuamen
Et es tan fers e salvatges, que del bailar si defen.

L'autre fon noyritz sa jus part Cofolen
Ez anc no-n vis bellazor, mon escien:
Aquest non er ja camjatz ni per aur ni per argen.

Qu'ie-l donei a son senhor polin payssen,
Pero si-m retinc ieu tan de covenen
Que, s'ilh lo tenia un an, qu'ieu lo tengues mais de cen.

Cavalier, datz mi cosselh d'un pessamen:
-Anc mays no fuy issaratz de cauzimen- :
Res non sai ab qual me tengua, de n'Agnes o de n'Arsen.

De Gimel ai lo castel e-l mandamen,
E per Niol fauc ergueill a tota gen:
C'ambedui me son jurat e plevit per sagramen.