2017-11-22 8 views
1

ScrapyフレームワークのCSSセレクタを使用してHTMLの要素を選択/一致させようとしています。しかし、最後の子セレクタで抽出したいフィールドの1つにぶつかりました。scrapy CSS最後の子セレクタがテキストの選択に失敗する

<td class="Table-Standard-AwardName Table-Scholarship-AwardName"> 

<a id="ctl00_ContentPlaceHolder1_ScholarshipDataControl_grvScholarshipSearch_ctl02_hylScholarshipName" class="bold" href="/Scholarships/14123/Family-Bursary,-The">Family Bursary, The</a> 

<br> 

<span>Field of Study:</span> 

EcologyEnvironmental Science 

</td> 

テキスト "EcologyEnvironmental科学は" 私が一致していることである。ここでは

はHTMLです。

私は最後の子は出力が示す「研究分野」をセレクタ使用:

In [3]: response.css('td.Table-Standard-AwardName.Table-Scholarship-AwardName > *:last-child::text').extract_first() 
Out[3]: 'Field of Study:' 

私は他の質問を通して見て、無駄に、nth-last-child() and combined siblingセレクタのような複数の方法を試してみました。助けて!

+0

は 'response.cssをお試しください( 'td.Table-Standard-AwardName.Tabl e-Scholarship-AwardName> * :: text ')[ - 1] .extract() 'となります。 –

+0

xpathを使用しますか? – Jasonw

+0

それと、インスペクタが与えた 'response.xpath( '// * [@ id =" ctl00_ContentPlaceHolder1_ScholarshipDataControl_grvScholarshipSearch "]/tbody/tr [2]/td [2]/text() ') 'となります。どちらも出力をもたらさなかった。 –

答えて

0

それはすでにEcologyEnvironmental Scienceテキストはあなたが唯一のこのような何かをしようと、そのテキストを抽出する必要がある理由です、td要素の一部である、と言われていたよう:

values = response.css('.Table-Standard-AwardName.Table-Scholarship-AwardName::text').extract() 
out = next(filter(None, map(methodcaller('strip'), values))) 
# you can assign 'EcologyEnvironmental Science' to your item 
+0

ありがとう、はい、私はそれをすべて呼び出すと出力をフィルタリングの考えていません。 –

+0

偉大なので、あなたが助けてくれたら、この質問に答えて記入してください。 – Wilfredo

+0

私は実際にはcss/xpath/regexを使って選択することを望んでいました。私が扱っているHTMLファイルでは、各 'td'行のテキストは非常に異なっているので、それらをフィルタリングする共通の値を見つけるのは難しいでしょう。私は周りを見回していました - 最後の 'td'ノードのセレクタが必要です。私が次の数日以内に別の作業方法を手に入れなければ、私はこの質問に答えていると思います。 –

0

「EcologyEnvironmental Science」は要素(スパン、divなど)ではなく、その内容の一部です(td)。したがって、そのクラスのの直系の子である... > * ...を満たしていません。

CSSを使用してコンテンツの一部のみを選択できるようにするには、以下のような

... 
    <span>Field of Study:</span> 
    <span>EcologyEnvironmental Science</span> 
</td> 
+0

ええ、もし私がページを書いたら、私はそれを' span'に入れました。 'td'の最後の内容のセレクタはありますか? –

関連する問題