現在、scrapy を使用して多数のスパイダーをセットアップしています。これらのスパイダーは、ターゲット サイトからテキスト(記事、フォーラムの投稿、段落など) のみを抽出することになっています。
問題は、ターゲットノードに<script>
タグが含まれているため、スクレイピングされたテキストに JavaScript コードが含まれている場合があることです。
これは、私が取り組んでいるものの実際の例へのリンクです。この場合、ターゲット ノードは//td[@id='contenuStory']
です。問題は<script>
、最初の子 div にタグがあることです。
Web と SO で解決策を探すのに多くの時間を費やしましたが、何も見つかりませんでした。明らかな何かを見逃していないことを願っています!
例
HTML 応答 (対象ノードのみ) :
<div id="content">
<div id="part1">Some text</div>
<script>var s = 'javascript I don't want';</script>
<div id="part2">Some other text</div>
</div>
私が欲しいもの :
Some text
Some other text
私が得るもの:
Some text
var s = 'javascript I don't want';
Some other text
私のコード
xpath セレクターが与えられた場合、次の関数を使用してテキストを抽出しています。
def getText(hxs):
if len(hxs) > 0:
l = hxs.select('string(.)')
if len(l) > 0:
s = l[0].extract().encode('utf-8')
else:
s = hxs[0].extract().encode('utf-8')
return s
else:
return 0
XPath軸(のようなものchild::script
)を使用してみましたが、役に立ちませんでした。