質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Beautiful Soup

Beautiful Soupは、Pythonのライブラリの一つ。スクレイピングに特化しています。HTMLデータの構文の解析を行うために、HTMLタグ/CSSのセレクタで抽出する部分を指定することが可能です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

678閲覧

Beautiful soupにおいて、二つの別々の値をセットで出力したい

takumiohashi012

総合スコア4

Beautiful Soup

Beautiful Soupは、Pythonのライブラリの一つ。スクレイピングに特化しています。HTMLデータの構文の解析を行うために、HTMLタグ/CSSのセレクタで抽出する部分を指定することが可能です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/10/04 17:27

聖書に関する課題を行っており、現在Wikisourceより聖書の訳文のスクレイピングを行っています。

目的:聖書の章と説(ex 6:1)と文<P要素>をまとまった形で出力したい。
現在の状況:<p要素>のみ(文のみ)を出力する事、またクラスは”mw-headline”であり、
属性はspanである章節のみを出力することはできるが、二つまとまって出力する事が
できていない。
+追記の疑問点:大きな要素以下のコードでは<h4>などにも囲まれていない、ただのP要素に関して、親要素や子要素兄弟要素という概念が通用するのかを知りたい。


コード:

<h4>  <span class="mw-headline" id="6:1">6:1</span>  <span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a  href="/w/index.php?title=%E3%83%9E%E3%82%BF%E3%82%A4%E3%81%AB%E3%82%88%E3%82%8B%E7%A6%8F%E9%9F%B3%E6%9B%B8 (%E5%8F%A3%E8%AA%9E%E8%A8%B3)&amp;action=edit&amp;section=145" title="節を編集: 6:1">編  集</a><span class="mw-editsection-bracket">]</span></span> </h4> <p>自分の義を、見られるために人の前で行わないように、注意しなさい。もし、そうしないと、天にいますあなたがたの父から報いを受けることがないであろう。 </p>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

以下のような感じです。

python

1>>> from bs4 import BeautifulSoup 2>>> 3>>> data = '''<h4> 4... <span class="mw-headline" id="6:1">6:1</span> 5... <span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a  href="/w/index.php?title=%E3%83%9E%E3%82%BF%E3%82%A4%E3%81%AB%E3%82%88%E3%82%8B%E7%A6%8F%E9%9F%B3%E6%9B%B8 (%E5%8F%A3%E8%AA%9E%E8%A8%B3)&amp;action=edit&amp;section=145" title="節を編集: 6:1">編  集</a><span class="mw-editsection-bracket">]</span></span> 6... </h4> 7... <p>自分の義を、見られるために人の前で行わないように、注意しなさい。もし、そうしないと、天にいますあなたがたの父から報いを受けることがないであろう。 8... </p>''' 9>>> 10>>> soup = BeautifulSoup(data) 11>>> h4_es = soup.find_all('h4') 12>>> for h4_e in h4_es: 13... id = h4_e.find('span').text 14... content = h4_e.next_sibling.next_sibling.text 15... print(f'章名 :{id}\n内容:{content}') 16... 17章名 :6:1 18内容:自分の義を、見られるために人の前で行わないように、注意しなさい。もし、そうしないと、天にいますあなたがたの父から 報いを受けることがないであろう。

投稿2021/10/04 23:18

ppaul

総合スコア24666

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takumiohashi012

2021/10/06 16:29

ppaulさんご回答ありがとうございました。 大変勉強になるアンサーでした。 深く分析して、参考にさせていただきます。
guest

0

ウィキソースのサイトの機能を使って、直接プレーンテキストとしてダウンロードできますが、それでは駄目ですか? 空行は正規表現などを使って削除しないといけないですが。

というより、サイトで表示された文章を直接選択してコピーして、テキストファイルにペーストした方が、余計な余白も挟まらないので良さそうです。

↓プレーンテキストだとこんな感じでダウンロードされます(空行はママ)。

plaintext

1第6章 2 3 46:1 5 6 7自分の義を、見られるために人の前で行わないように、注意しなさい。もし、そうしないと、天にいますあなたがたの父から報いを受けることがないであろう。 8 9 10 11 12 136:2 14 15 16だから、施しをする時には、偽善者たちが人にほめられるため会堂や町の中でするように、自分の前でラッパを吹きならすな。よく言っておくが、彼らはその報いを受けてしまっている。 17 18 19 20 21 226:3 23 24 25あなたは施しをする場合、右の手のしていることを左の手に知らせるな。 26 27 28 29 30 316:4 32 33 34それは、あなたのする施しが隠れているためである。すると、隠れた事を見ておられるあなたの父は、報いてくださるであろう。 35 36 37 38 39 406:5 41 42 43また祈る時には、偽善者たちのようにするな。彼らは人に見せようとして、会堂や大通りのつじに立って祈ることを好む。よく言っておくが、彼らはその報いを受けてしまっている。 44 45 46 47 48 496:6 50 51 52あなたは祈る時、自分のへやにはいり、戸を閉じて、隠れた所においでになるあなたの父に祈りなさい。すると、隠れた事を見ておられるあなたの父は、報いてくださるであろう。 53 54 55 56 57 586:7 59 60 61また、祈る場合、異邦人のように、くどくどと祈るな。彼らは言葉かずが多ければ、聞きいれられるものと思っている。 62 63 64 65 66 676:8 68 69 70だから、彼らのまねをするな。あなたがたの父なる神は、求めない先から、あなたがたに必要なものはご存じなのである。 71 72 73 74 75 766:9 77 78 79だから、あなたがたはこう祈りなさい、 80 81天にいますわれらの父よ、 82 83 84 85御名があがめられますように。 86 87 88 89 90 916:10 92 93 94御国がきますように。 95 96 97 98みこころが天に行われるとおり、 99 100 101 102地にも行われますように。 103 104 105 106 107 1086:11 109 110 111わたしたちの日ごとの食物を、 112 113 114 115きょうもお与えください。 116 117 118 119 120 1216:12 122 123 124わたしたちに負債のある者をゆるしましたように、 125 126 127 128わたしたちの負債をもおゆるしください。 129 130 131 132 133 1346:13 135 136 137わたしたちを試みに会わせないで、 138 139 140 141悪しき者からお救いください。

投稿2021/10/04 18:26

編集2021/10/04 18:36
etherbeg

総合スコア1195

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takumiohashi012

2021/10/06 16:26

etherbegさん 回答いただきありがとうございました。 追記で頂いた情報など勉強になりました。ありがとうございます。 今回はBeautifulsoupの勉強を行っていた関係もあり、もう一方の回答をベストアンサーにさせていただきました。 二つの質問にあたってご回答いただきありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問