時間がなく、焦って質問したため語弊があったので全体的に変更します。
前提・実現したいこと
スクレイピングで本文のみを抽出したい
使用するパッケージ
- requests
- Beautiful Soup
- ExtractContent // 本文抽出用のパッケージ
手順
- requests で要求したサイトにアクセス
- Beautiful Soupでページ内のHTMLを取得 // ここまでは容易
- ExtractContentで本文を抽出 // ここで下手げに改行されたテキストが出力されるので、改行を消したい。
問題点
- 手順2.の後、str型に変更。
replace("\n", "")などで改行を消してから、手順3.ExtractContentに通すと、隣り合うpタグ同士が改行されず、1つの文章として出力されてしまうので、これを解消したい。(ここの質問の仕方が間違っていて語弊が生まれた模様。大変申し訳ありませんでした。)
HTML
1 <p> 2 いつもありがとうございます。 3 かなり慣れてきて、痛みを感じにくくなって 4 きました。3週間くらい持つようになって来ました。 5 また来月もよろしくお願いします。 6 </p> 7 <p> 8 いつもありがとうございます。 9 かなり慣れてきて、痛みを感じにくくなって 10 きました。3週間くらい持つようになって来ました。 11 また来月もよろしくお願いします。 12 </p>
いつもありがとうございます。かなり慣れてきて、痛みを感じにくくなってきました。3週間くらい持つようになって来ました。また来月もよろしくお願いします。いつもありがとうございます。かなり慣れてきて、痛みを感じにくくなってきました。3週間くらい持つようになって来ました。また来月もよろしくお願いします。
こうではなく。。。
いつもありがとうございます。かなり慣れてきて、痛みを感じにくくなってきました。3週間くらい持つようになって来ました。また来月もよろしくお願いします。 いつもありがとうございます。かなり慣れてきて、痛みを感じにくくなってきました。3週間くらい持つようになって来ました。また来月もよろしくお願いします。
として抽出したい。
やりたいこと。
手順2の時点で、同じタグ内だけであれば改行を消したいです。
そうすれば、ExtractContentできれいな本文が抽出できると予想。
再帰的にタグごとに改行を削除する方法を知りたいです。
> すべて改行されて抽出されてしまい意味がありません
タグの内容が改行されて抽出されると意味が無いという事でしょうか?
> 個人的に行いたいのはタグごとにテキストを抽出出来たらな
タグ毎にテキストを抽出出来ていないのですか?
説明の意味が分からないので、サンプルのHTMLドキュメントと、期待したテキスト、実際に取得されたテキストを例示してみてください。
何がしたいのですか???
「すべて改行されて抽出されてしまい意味がありません」って、Pタグに囲まれている文字列は改行を含んでいるので、それをスクレイピングすれば改行を含む文字列になるのが当然だと思うのですが。
> 正規表現による改行、タブなどの除去を試みたのですが、すべての文字列が繋がってしまい意味がありませんでした。
「意味がありません」の意味がわからない
> 1行ごとに行おうとしましたが
なにをしたかわからない
> そもそも入れ子構造のHTMLなのでどのように行えばいいのか
なにをしたいのかわからない
この調子で、「期待していること」も「期待していない動作」も「やったこと」も、なにもかもすべてが伝わってないです。
(曖昧に解釈してくれる人間にさえ伝えられないのが、プログラムが書けない原因かと感じましたが)
例えば
<div>なにか<span>テキスト</span></div>
という入れ子を「タグごとにテキストを抽出」するというのは、いったいどういう結果を期待しますか?
「タグごとにテキストを抽出」という日本語の使い方を間違えていますので、「タグごとにテキストを抽出」という言葉を使わないで書きましょう。
「タグ」が理解できてない可能性もあるので、「タグ」という言葉を使わないで書く方がいい気がします。
焦って質問したため、語弊が生まれてしまい申し訳ありませんでした。
修正いたしましたの、ご確認よろしくお願いいたします。