目次
日本語訳ドキュメント・ヘルプ
ありがたいです
ImportError: cannot import name ‘Beaufifulsoup’ from ‘bs4’エラーの解決
パッケージインストールでpip3 install Beautifulsoup
は行っているが、pip3 install bs4
を行っていない。(俺の場合これで解決。…なんでかよくわからないけど。)
もしくは
・HTMLParser.pyなどbs4 moduleの中ですでに使われているファイル名にしない
・bs4 と beautifulsoup4-4.6.0.dist-infoのファイルを作業中のディレクトリにコピーする
Cannot import Beautiful SoupI am trying to use BeautifulSoup, and despite using the import statement: from bs4 import BeautifulSoup I am getting the error: ImportError: cannot import na...
html.parser
html.parserはpython3に予め組み込まれているパーサ。他に使われるパーサとしてはlxmlやhtml5libがある。
pip3 install lxml
pip3 install html5lib
で使用することが出来る。
html.parser…デフォルト。(Pure)Pythonで書かれている。規則のミスがあるHTMLコードだと上手くパース出来ない。
lxml…C言語(Ctyhonでチューニングされている)、Cライブラリに依存。バランスが良い。
html5lib…html5の規則に対応。HTML構文に問題があっても修正して読み込める。ただ、遅い。
パーサー(parser)とは、一定の規則で記述されたテキストを解析し、プログラムで扱いやすいようなデータに変換する処理のことです。日本語では「構文解析」と言います。
find() / find_all()
3種類の引数指定をよく使う
find(tag, attributes ,keywords)
tag…タグ/タグの名前の文字列のリストを渡す。
(例).find_all(['h1' ,'h2' ,'h3'])
attibutes…属性のpython辞書から、その属性を含むタグに対応させる。
(例).find_all('span' , {'class' :{'test'}})
keywords(キーワード)…特別な属性を持つタグを選べる。
→正規表現でも可能
class属性で要素を探すとき、classはPython予約語であるため使えない(引数に限らず変数でも使えない)。class_とすることで使用できる。
.find_all(class_='test')
findAll(name=None, attrs={}, recursive=True, text=None, limit=None, **kwargs)
Beautiful Soupドキュメント — BeautifulSoup Document 3.0 ドキュメント
ツリー構造
BeautifulSoupは一般的に現在選ばれているタグの子孫(descendants)を扱う。
子孫の内、子だけを探すなら.children
.next_siblings
…(次の)兄弟。
.previous_siblings
…(前の)兄弟。
.parent
や .parents
…親。
prettify()
整形してHTMLを表示
print(bs.prettify())
.get_text()
文章からタグを除き、テキストだけの文字列を返す。
BeautifulSoupオブジェクト
・BeautifulSoupオブジェクト
・Tagオブジェクト
→findなどで得られる個別オブジェクト/オブジェクトのリスト
・NavigableStringオブジェクト
→タグ内のテキストを表現。タグそのものではない。
・Commentオブジェクト
→HTMLコメントを見つけるために使われる。
その他
イテレーション 【 iteration 】
イテレーションとは、反復、繰り返しという意味の英単語。
http://e-words.jp/w/%E3%82%A4%E3%83%86%E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3.html
集合
Pythonには標準のデータ型として集合を扱うset型が用意されている。
set型は重複しない要素(同じ値ではない要素、ユニークな要素)のコレクション
Python, set型で集合演算(和集合、積集合や部分集合の判定など) | note.nkmk.mePythonでは組み込みのデータ型として集合を扱うset型が提供されている。set型は重複しない要素(同じ値ではない要素、ユニークな要素)のコレクションで、和集合、積集合、差集合などの集合演算を行うことができる。4. 組み込み型 set(集合)型 — Python 3.6.4 ドキュメント ここでは、基本操作の、set...
Pythonで例外(実行中に検出されたエラー)をキャッチして処理するにはtry, exceptを使う。例外が発生しても途中で終了させずに処理を継続できる。さらにelse, finallyを使うことで終了時の処理を設定することが可能。
Pythonの例外処理(try, except, else, finally) | note.nkmk.mePythonで例外(実行中に検出されたエラー)をキャッチして処理するにはtry, exceptを使う。例外が発生しても途中で終了させずに処理を継続できる。さらにelse, finallyを使うと終了時の処理を設定可能。8. エラーと例外 - 例外を処理する — Python 3.11.3 ドキュメント 例外処理の基本:...
リストの要素を結合する
join()
関数は、文字列のリストを一つの文字列に結合することができます。join()
関数では、区切り文字を指定することもできます。