爬虫類のまとめを記録する

2971 ワード

beasutifulSoupの操作

 div 
ps.find("div", attrs={'class': 'xxx'})
ps.find_all('div', attrs={'id': 'xxx'})

for div in ps.find_all('div': attrs={'class': 'xxx'}):
	print(div.get_text())
	#  div   div
	one = div.find('div', attrs={'class':'xxx'})
	print(one) #  div 

ここでBeautifulSoup 4は複雑なHTMLを1つのツリー構造に解析するものであり、各ノードはPythonオブジェクトであり、すべてのオブジェクトは4つにまとめることができる:Tag NavigablesString BeautifulSoup Commentその例:from bs 4 import BeautifulSoup file=open('./aa.html',‘rb’)html=file.read() bs = BeautifulSoup(html,“html.parser”)

titleラベルのすべての内容を取得

print(bs.title) 

ヘッダーラベルのすべての内容を取得

print(bs.head) 

最初のaラベルのすべての内容を取得

print(bs.a)    bs.   

を選択します。

print(type(bs.a)) this return  Tag 
 tag name  attrs 
print(ps.a.attrs)   a 
# get , , 
print(bs.a['class']) #   bs.a.get('class')
 
bs.a['class'] = "newClass"
print(bs.a) 

この属性を削除することもできます

del bs.a['class'] 
print(bs.a)

あるラベルにナビゲートすると、このラベルの内容を取得したいと思います。

print(bs.title.string) 
print(type(bs.title.string)) NavigableString

.conentsはtagの下のすべてのサブノードを取得してlistを返します。


.descendants:Tagのすべての子を取得します.strings:Tagが複数の文字列を含む、すなわち子孫ノードにコンテンツがある場合、これを用いて取得する、後進することができる.stripped_strings:stringsの使い方と一致していますが、余分な空を取り除くことができます.parent:Tagを取得する.parents:親世代要素のすべてのノードを再帰的に取得し、1つを返す.previous_Sibling:現在のTagの前のノードを取得し、属性は通常文字列または空白であり、実際の結果は現在のラベルと前のラベルの間のトン数和である.next_Sibling:現在のTagの次のノードを取得します.属性は通常文字列または空白で、結果として現在のラベルと次のラベルの間のトン数となります.previous_Siblings:現在のTagの上のすべての兄弟ノードを取得し、1つを返す.next_Siblings:現在のTagの下のすべての兄弟ノードを取得し、1つを返す.previous_Element:previous_Siblingは同じですが、通常はそうではありません.next_Element:解析中に次の解析対象オブジェクト(文字列またはtag)を取得し、next_Siblingは同じですが、通常はそうではありません.previous_Elements:ドキュメントの解にアクセスできるジェネレータを返します.next_Elements:ドキュメントの解に後方にアクセスできるジェネレータを返します.has_attr:Tagに属性が含まれているかどうかを判断する

ドキュメントツリーの検索


find_all(name,attrs,recursive,text,**kwargs)name:パラメータは、検索文字列が完全に一致することを示す内容a_list = bs.find_all(‘a’)はすべてのaラベルのlistの操作を返します.また、このパラメータは正規表現のattrsを受信することができます.辞書辞書を定義するkeyはラベルの属性name valueです.対応する属性の値bs=BeautifulSoup(html、「html.parser」)です.

クエリid=headのTag

t_list = bs.find_all(id="head") print(t_list) 

クエリhrefプロパティにはss 1が含まれます。bdstatic.comのタグ

t_list = bs.find_all(href=re.compile("http://news.baidu.com")) 
print(t_list) 

classを含むすべてのTagをクエリーします(注意:classはPythonでキーワードに属しているので、違いを示すために_を追加します)

t_list = bs.find_all(class_=True) 
for item in t_list: 
    print(item)

text:textパラメータでドキュメント内の文字列の内容を検索できます.nameパラメータのオプション値と同様に、textパラメータは文字列、正規表現を受け入れます.