爬虫類のまとめを記録する
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パラメータは文字列、正規表現を受け入れます.