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

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

新規登録して質問してみよう
ただいま回答率
85.50%
bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

Beautiful Soup

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

置換

置換とは文字列中の特定の文字に対して、別の文字列に置き換えることを指します。

Python

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

Q&A

0回答

1497閲覧

ローカルのHTMLファイルのID要素をインクルードファイルに置換したい(できればPython Beautiful Soupで)

退会済みユーザー

退会済みユーザー

総合スコア0

bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

Beautiful Soup

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

置換

置換とは文字列中の特定の文字に対して、別の文字列に置き換えることを指します。

Python

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

0グッド

0クリップ

投稿2019/02/01 07:55

編集2022/01/12 10:55

下記の問題点を解決する方法をご教授いただけませんでしょうか?
よろしくお願いいたします。

解決したい事

  1. 元のHTMLファイルの内容が変わってしまいます

-- 内容の一部が消えます
-- 一部の箇所で<が<に、>が>になる場合があります

  1. 改行、空白、タブが変更されます

コードの内容

php

1from bs4 import BeautifulSoup 2 3path = 'C:/home/sitename/include/file.html' 4 5file_read = open(path, 'r') 6line = file_read.read() 7 8soup = BeautifulSoup(line, 'html.parser') 9new_tag = '<?include file="include/item/`$item.code`.html"?>' 10soup.find(id="hoge_fuga").replace_with(new_tag) 11 12str_html = str(soup.prettify) 13 14file_write = open(path, 'w') 15file_write.write(str_html) 16

HTMLファイル(一部抜粋)

HTML

1<!-****************変更前*********************-> 2<img src="<?img_item item=$data size="100"?>" alt="<?$data.name?>" width="100" height="50" id="hoge_fuga"> 3 4<!-****************変更後*********************-> 5//崩れてしまいます。 6<img 100"?="" src="&lt;?img_item item=$data size="/> 7" alt=" 8<?$data.name?> 9" width="100" height="50" id="hoge_fuga"&gt; 10

環境

  • Windeos10
  • Spyder(Python3.7)
  • HTMLファイルの文字コードはShift_JIS

補足

  • ちゃんとしたHTMLでないとパーサーに変更されてしまう?

http://kondou.com/BS4/#parser-installation

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

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

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

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

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

wwbQzhMkhhgEmhU

2019/02/02 01:33

直すというより、正しくないHTMLを意図した解釈のさせ方をするというのは難しいと思います。 ご存知の通り、不等号記号はHTML中で開始タグ/終了タグ以外では基本認められていません。 また、二重引用符で始まった属性値内に二重引用符を使うこともできません。 どちらも、そうしないとタグの終了や、属性の終了を判断できなくなるからです。 これらを表現する場合は、文字(実体)参照という形式を使うのが正しいHTMLです。 大抵のHTMLパーサーは人間がそういうのを間違えてしまう前提で、ある程度うまくレンダリングされるよう解釈しますが、ここまで酷いと救いようがないということだと思います。 解決策になっていなくてすみませんが、置換までする前提でそのHTMLを食わせて、パーサーの誤りだとするのは横暴です。
退会済みユーザー

退会済みユーザー

2019/02/04 04:18

ご回答ありがとうございます。正しくないHTMLを処理するのはPythonでは無理そうですので別の方法で対応したいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問