html からimg タグのsrc 属性の値を取得してwebページに含まれている画像URLのリストを作ります。
環境
- Windows10
- python3.5.2
手こずったところ
- HTMLParser は継承して必要な処理をオーバーライドして使う。
- urllib.request.urlopen は、HTTPResponse オブジェクトを返す。
- HTTPResponse.read メソッドはバイト列を返すので、HTMLParser.feed メソッドにそのまま渡すと、
TypeError: Can't convert 'bytes' object to str implicitly
と言われる。- なのでbytes.decode で文字列に変換する。
ソースコード
from html.parser import HTMLParser import urllib.request class MyHTMLParser(HTMLParser): def __init__(self): HTMLParser.__init__(self) self.urllist = [] def handle_starttag(self, tag, attrs): if tag != 'img': return; for attr in attrs: if attr[0] == 'src': self.urllist.append(attr[1]) if __name__ == '__main__': url = 'ここにURLをいれる' request = urllib.request.Request(url) with urllib.request.urlopen(request) as htmldata: parser = MyHTMLParser() parser.feed(htmldata.read().decode('utf-8')) print(parser.urllist) parser.close()