lxmlを使うとデータをツリー構造に格納してくれる。
import lxml.html # HTMLのテキスト text = """<html> <head><title>タイトル</title> <body> <p> hello world </p> <p> 二行目 </p> <div> 子要素 </div> </body> </html> """ ret = lxml.html.fromstring( text ) for itr in ret: # forでイテレーションする print(itr.tag) # タグへアクセス if len(list(itr)): # 子要素があるかどうかはlistの長さを調べる print("{") for i in itr: print(i.tag ,"[" , i.text , "]" ) print("}")
lxml.html.parseはURLを渡せるのだが、
どうやらHTTPSに対応していないらしい。
urllib.requestを使ってHTMLを取得し、それをfromstringへ入力する。
# lxmlはhttpsに対応していない。 # html.parse( /*ここに入れていいのはhttpのURLだけ*/ ) # urllib.request.urlopenを使ってhttpsからテキストを取得してそれを入力する # from urllib import urlopen # Python2だとurllib2らしい import urllib.request urldata = urllib.request.urlopen('https://suzulang.com/') text = urldata.read() print( text )