実現したいこと
問題の発生個所をつきとめたい
発生している問題・分からないこと
Python BeautifulSoup で、自分のサイトの コンテンツをチェックしています。
2万件程度のコンテンツを ループさせて 下の方の箇所を実行しています。
そうすると、コンテンツのうち、いくつかで
plain
1/usr/local/lib/python3.11/html/parser.py:170: XMLParsedAsHTMLWarning: It looks like you're parsing an XML document using an HTML parser. If this really is an HTML document (maybe it's XHTML?), you can ignore or filter this warning. If it's XML, you should know that using an XML parser will be more reliable. To parse this document as XML, make sure you have the lxml package installed, and pass the keyword argument `features="xml"` into the BeautifulSoup constructor.
または
plain
1Some characters could not be decoded, and were replaced with REPLACEMENT CHARACTER.
という出力が発生します。
ひとつは、コンテンツが html であるべきところ、xml になっている。
もうひとつは、utf-8 であるべきところ が 他のコードになっていることは 理解しています。
ただし、件数が多いので、それが どの URL か特定できていないので、特定したいのです。
URL を 特定する方法 もしくは 出力発生時に 例外を発生させる方法が あれば 教えてください。
該当のソースコード
python
1http = urllib3.PoolManager(cert_reqs='CERT_REQUIRED', ca_certs='証明書ファイル') 2略 3html = http.request('GET', 'URL') 4soup = BeautifulSoup(html.data, "html.parser")
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
自分の望む ことは得られませんでした。
補足
soup の箇所に print で 対象の URL を出力すれば いいのは 存じておりますが、それ以外の スマートな方法がないものかと 思っております。
回答1件
あなたの回答
tips
プレビュー