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

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

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

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

Python

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

Q&A

解決済

1回答

758閲覧

Pythonでスクレイピングした結果をすべてテキストファイルに書き込みたい

takumiohashi012

総合スコア4

Beautiful Soup

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

Python

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

0グッド

0クリップ

投稿2021/10/13 16:51

⓵目的:Pythonでスクレイピングした聖書の章と節・本文の結果をすべてテキストファイルに書き込みたい
⓶現在の状況:下記のコードでは最後の一行(最後の章と節・本文)のみしか表示されない。
考えられる原因:配列?の最後の要素のみしか反映されていないので、すべての要素を含む
表現が出来ていない。

現在のコード:
from bs4 import BeautifulSoup
from urllib import request

url='https://ja.wikisource.org/wiki/%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)'

response=request.urlopen(url)

soup = BeautifulSoup(response)
response.close()

h4_all = soup.find_all('h4')

for h4_each in h4_all:
id = h4_each.find('span').text
content = h4_each.next_sibling.next_sibling.text
print(f'章節 :{id}\n内容:{content}')

with open('document1.txt','w') as f:
print(f'章節 :{id}\n内容:{content}',file=f)

⓷結果:
章節 :28:20
内容:あなたがたに命じておいたいっさいのことを守るように教えよ。見よ、わたしは世の終りまで、いつもあなたがたと共にいるのである」。

(⓸結果
なおテキストファイルへの書き込みのコード(上記のコードの最後の二行)を書かなかった場合は、下記のように章節 :1:1~28:20まで表示されます。

・・・・・
章節 :28:18
内容:イエスは彼らに近づいてきて言われた、「わたしは、天においても地においても、いっさいの権威を授けられた。

章節 :28:19
内容:それゆえに、あなたがたは行って、すべての国民を弟子として、父と子と聖霊との名によって、彼らにバプテスマを施し、

章節 :28:20
内容:あなたがたに命じておいたいっさいのことを守るように教えよ。見よ、わたしは世の終りまで、いつもあなたがたと共にいるのである」。)

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

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

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

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

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

guest

回答1

0

ベストアンサー

with open('document1.txt','a') as f:
でお試しください。

f = open('myfile.txt', 'w')
f = open('myfile.txt', 'a')
f = open('myfile.txt', 'x')

'w'を指定した場合は新規に作成、上書き
'a'を指定した場合は最後に追加で書き込み
'x'を指定した場合は新規に作成、ファイルが存在していた場合はFileExistsError

投稿2021/10/13 19:40

DeepRoastBeans

総合スコア79

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

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

takumiohashi012

2021/10/15 14:24

回答いただきありがとうございます。 頂いた回答を試した結果、目的通りの回答を得ることが出来ました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問