Pythonを使用したWebスクレイピング。Beautifulsoupの使用方法やエラー解決など。

pythonプログラミング学習 Python

 

日本語訳ドキュメント・ヘルプ

ありがたいです

kondou.com - Beautiful Soup 4.2.0 Doc. 日本語訳 (2013-11-19最終更新)

 

Beautiful Soupドキュメント — BeautifulSoup Document 3.0 ドキュメント

 

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 Soup
I 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)とは、一定の規則で記述されたテキストを解析し、プログラムで扱いやすいようなデータに変換する処理のことです。日本語では「構文解析」と言います。

HTMLパーサーとは

 

find()   /   find_all()

3種類の引数指定をよく使う

find(tag, attributes ,keywords)

 

tag…タグ/タグの名前の文字列のリストを渡す。

(例).find_all(['h1' ,'h2' ,'h3'])

 

attibutes…属性のpython辞書から、その属性を含むタグに対応させる。

(例).find_all('span' , {'class' :{'test'}})

 

前提知識:Pythonの辞書型とは

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.me
Pythonには標準のデータ型として集合を扱うset型が用意されている。set型は重複しない要素(同じ値ではない要素、ユニークな要素)のコレクションで、和集合、積集合、差集合などの集合演算を行うことができる。4. 組み込み型 set(集合)型 — Python 3.6.4 ドキュメント ここでは、基本操作の、setオブ...

Pythonで例外(実行中に検出されたエラー)をキャッチして処理するにはtry, exceptを使う。例外が発生しても途中で終了させずに処理を継続できる。さらにelse, finallyを使うことで終了時の処理を設定することが可能。

Pythonの例外処理(try, except, else, finally) | note.nkmk.me
Pythonで例外(実行中に検出されたエラー)をキャッチして処理するにはtry, exceptを使う。例外が発生しても途中で終了させずに処理を継続できる。さらにelse, finallyを使うことで終了時の処理を設定することが可能。8. エラーと例外 - 例外を処理する — Python 3.8.5 ドキュメント ここ...

リストの要素を結合する

join() 関数は、文字列のリストを一つの文字列に結合することができます。join() 関数では、区切り文字を指定することもできます。

 

タイトルとURLをコピーしました