Scrapy:Webサイトからすべてのテキストをスクレイピングしますが、ハイパーリンクのテキストはスクレイピングしません

データ技術者

ここで、本文からすべてのテキストを抽出する方法を説明する役立つリンクを見つけました。Scrapyを使用してWebサイトからすべてのプレーンテキストを取得するにはどうすればよいですか?

ただし、すべてのテキストを抽出する過程で、不要なハイパーリンクのテキストもスクレイプします。たとえば、ウェブサイトをスクレイピングする場合:http//quotes.toscrape.com/tag/humor/page/1/

次のエクストラクタを使用しました。

text = re.sub(' +',' ',re.sub('\n|\t|\r','',' '.join(response.selector.xpath('//body/descendant-or-self::*[not( self::script | self::style)]/text()').extract()))).strip()

私は次の出力を得ました:

「ログイン表示タグをスクレイピングするための引用:ユーモア「良い小説を楽しんでいない紳士であれ女性であれ、その人は耐えられないほど愚かであるに違いありません。」沿って ...."

「ログイン」という言葉は、ハイパーリンクのテキスト部分に由来します

<a href="/login">Login</a>

ハイパーリンクからのテキストの別の例は次のとおりです。

<a href="#" data-toggle="tab" class="login-tab-links2 toplogin">KFN PUBlIC INVESTORS<small>K1 AND TAX INFO</small></a></li>

「KFNPUBLICINVESTORS」と「K1ANDTAXINFO」も削られます。

ハイパーリンクからのテキストも削られないようにするにはどうすればよいですか?

よろしくお願いします!

グラニトサウルス

ノードparentまたはancestorが不要なノードであるかどうかを確認できます。

次に例を示します。
このxpathは、ノードの子ではないノードのすべてのテキストを検索します<a>

//text()[not(parent::a)]

またはancestor、先祖のいずれかが<a>ノードであるかどうかをチェックするwhichを使用できます(これは、親、祖父母、祖父母などを意味します)。

//text()[not(ancestor::a)]

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ