day03.2 BS4のインストールと使用は、解析ライブラリのドキュメントツリーのBS4を横断、ドキュメントツリー検索をBS4

BS4のインストールと使用

 

'' '' '' 
'' ' 
解析器を安装:
PIP3はlxmlのインストール

解析库安装:
PIP3はBS4をインストール
''' 
html_doc = ""」
<HTML> <HEAD> <TITLE>ヤマネの物語</ TITLE> </ヘッド> 
<BODY> 
<Pクラス= "姉妹"> <B> $、37 </ B> </ P> 
<Pクラス= "物語" ID = "P">昔3人の妹があった、とその名前た
<a href="http://example.com/elsie" class="sister">エルシー</a>で、
<HREF = "http://example.com/lacie"クラス= "姉妹" ID = "リンク2">のLaCie </a>と
<HREF = "のhttp://example.com/tillie」クラス= "姉妹" ID = "LINK3"> Tillie </a>に; 
。そして、彼らはの底に住んでいただけでなく、</ P> 

<Pクラス= "物語"> ... </ P> 
""」
から BS4インポートBeautifulSoup 

Pythonのライブラリの解析来る
#のスープを= BeautifulSoup(html_doc、 'html.parser') 

呼び出しは、BS4はスープ与えるオブジェクト 
スープ= BeautifulSoup(html_doc、' lxmlの' 

BS4対象の
印刷(スープ)

#のBS4タイプの
プリントを(タイプの(スープ)) 

美化 
HTML = soup.prettify()
 印刷(HTML)

 

 文書のBS4解析ツリートラバーサルライブラリー

 

html_doc = ""」
<HTML> <HEAD> <TITLE>ヤマネの物語</ TITLE> </ HEAD> 
<BODY> 
<Pクラス= "姉妹"> <B> $、37 </ B> </ P> 
<Pクラス=「物語」ID =「P」>一度3人の妹があった時間に、自分の名前だったと
<a href="http://example.com/elsie" class="sister">エルシー</ A >、
<a href="http://example.com/lacie" class="sister" id="link2">レイシー</a>と
<HREF = "http://example.com/tillie"クラス= "姉妹" ID = "LINK3"> Tillie </a>に; 
。そして、彼らはの底に住んでいただけでなく、</ P> 

<Pクラス= "物語"> ... </ P> 
""」
から BS4の輸入BeautifulSoup 

スープ = BeautifulSoup(html_doc、' lxmlの' 印刷(スープ)
#の印刷(タイプの(スープ)) ドキュメントツリーのトラバース1を、直接***** 
印刷(soup.html)
 印刷(タイプの(soup.html))
 印刷(soup.a)
 印刷(スープ.P) 

2は、タグ名取得
印刷(soup.a.name) 

3は、属性タグを取得***** 
印刷(soup.a.attrs)  ラベルのすべてのプロパティを取得
印刷(スープを。 a.attrs [ ' HREF ' ]) 

4、ラベルテキストを取得***** 
印刷(soup.p.text)  $ 37 

5、ネストされたSELECT 
印刷(soup.html.body.p) 

図6に示すように、子ノード、子孫ノード
プリント(soup.p.children)  戻りイテレータオブジェクト
プリント(リスト(soup.p.children))  [<B> 37 $ </ B>] 

7、親ノード、ノードの祖先
印刷(soup.b.parent)
 印刷(soup.b.parents)
 印刷(一覧(soup.b.parents)) 

8、兄弟姉妹(兄弟:兄弟)
印刷(soup.a)
次の兄弟ノードを取得します
印刷(soup.a.next_sibling) 

、すべての次の兄弟ノードを取得し、発電機返し
印刷(soup.a.next_siblings)
 印刷(一覧(soup.a.next_siblings)) 

兄弟取得
を印刷します( soup.a.previous_sibling)
リターン上のすべての兄弟ノードを取得し、発電機で
印刷(一覧(soup.a.previous_siblings))

 

ドキュメントツリー検索をBS4

 

「」「」「」
「'」
検索を:最初に見つけ
すべて見つける:find_all 

ラベルをし、発見するプロパティを探し:
name属性が一致する

    名前のタグ名
    attrsには、一致を見つけるために、属性
    、テキストマッチングテキスト
            
    ラベルを:
        -文字列フィルタ    
            文字列がグローバルに一致するように
            
        -定期的なフィルター
            試合再モジュール
            
        -フィルタリストの
            データは、リストと一致する
            
        - BOOLフィルタ
            トゥルーマッチ
            
        -メソッドのフィルタ
            プロパティの一部で使用されるには、不要な属性検索します。
    プロパティ:
        - class_が
        - ID 
'' ' 
html_doc = "" "
<HTML> <HEAD> <TITLE>ヤマネの物語</ TITLE> </ HEAD> <BODY> <Pクラス= "姉妹"> <B> $、37 </ B> </ P> <Pクラス= "物語" ID =「P」>昔3人の妹がありました。その名前は、<a href="http://example.com/elsie" class="sister">エルシー</a>の<のhref = "http://example.com/lacie"クラス= "姉妹"でしたID =「リンク2」>レイシー</a>と<a href="http://example.com/tillie" class="sister" id="link3"> Tillie </a>と、彼らはの底に住んでいました十分ます。</ p> <pクラス= "物語"> ... </ P> 
""」





'' ' 

过滤は楽器字符串
''' 
P = soup.find(名前= ' P ' 
P_S = soup.find_all(名前= ' P ' 

印刷(P)
 プリント(P_S)

#1 名+ attrsに 
P =スープ。 (名前=見つける' P '、attrsに= { " ID "" P " })
 印刷(P) 

名前+テキスト 
タグ= soup.find(名前= ' タイトル'、テキスト= " ヤマネの物語"印刷(タグ)

#1 名+テキスト+ ATTRS 
タグ= soup.find(NAME = ' A '、ATTRS = { " クラス"" SISTER " }、テキスト= " エルシー" プリント(タグ)

'' ' 
-正規フィルタ
モジュールに一致再
'' ' 
インポート名前マッチングノードとREモジュールを 
(A = soup.find = re.compile名(' A ' ))
 プリント(A)

A_S = soup.find_all(名=再.compile(' A '))
 印刷(A_S) 


ATTRS 
A = soup.find(ATTRS = { " ID ":re.compile(' リンク' )})
 プリント(A) 


-リストフィルタ
#の一致のリスト内のデータ
を印刷する(soup.find(名前= [ ' A '' P '' HTML '、re.compile(' A ' )]))
 プリント(soup.find_all(名= [ ' A '' P '' HTML '、再。コンパイル(' A ' )])) 


- BOOLフィルタ真のマッチ
プリント(soup.find(名=真、attrsには、= { " ID " :真})) 

-フィルタ方法特性のいくつかのためにすることはありませんあなたは、プロパティを見つける必要があります。

DEFのhave_id_not_class(タグ):
    印刷(tag.name)
    のIF tag.name == ' p型'   tag.has_attr(" 上記のIDを述べた"及び ませんが、 tag.has_attr(" クラス" ):
         リターンタグ

#の印刷(soup.find_all (名=関数オブジェクト))
印刷(soup.find_all(名= have_id_not_class)) 


补充知识点:
#1 のID 
A = soup.find(ID = ' リンク2 ' プリント(a)の

#のクラス 
P = soup.find(class_が= ' 姉妹' 印刷( P)

 

おすすめ

転載: www.cnblogs.com/jiangbaoyabo/p/11129776.html