hack のためのネタ帳, etc,,,

状況

HTML を拾ってきて正規表現で処理しようと以下のようなコードを書いたら
#!/usr/bin/env python3
import urllib.request
import re

url = 'https://example.com/'
with urllib.request.urlopen(url) as response:
    html = response.read()
m = re.search(r'(?s)<body>(.*)</body>', html)
以下のようなエラーが出た。
$ ./hoge.py 
Traceback (most recent call last):
  File "./hoge.py", line 8, in <module>
    m = re.search(r'(?s)<body>(.*)</body>', html)
  File "/usr/lib/python3.8/re.py", line 201, in search
    return _compile(pattern, flags).search(string)
TypeError: cannot use a string pattern on a bytes-like object

原因

cannot use a string pattern on a bytes-like object python regex」でググると以下のページを見つけた。

以下のようにして UTF-8 に直せとのこと
html = response.read().decode('utf-8')

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Wiki内検索

フリーエリア

管理人/副管理人のみ編集できます