前提・実現したいこと
現在,いくつかのwebページから要素を抽出するために,pythonでlxmlモジュールを利用したクローリングを行なっています.
その過程で,requestsモジュールを利用しないとエラーが起きる場面に遭遇しました.
今回,なぜそうなるのかを質問させていただきます.
発生している問題・エラーメッセージ
当初,以下のように記述していました.
Python3
1import lxml.html 2 3url = "http:hogehoge" 4tree = lxml.html.parse(url) 5root = tree.getroot()
いくつかのページでは上記のコードで問題なく取得できていましたが,あるページでは以下のエラーが出ました.
plain
1OSError: Error reading file 'http:hogehoge': failed to load external entity "http:hogehoge"
調べた結果(https://teratail.com/questions/250399),webサーバへアクセスする処理が必要とのことで,以下のように書き換えると動作しました.
Python3
1import lxml.html 2import requests 3 4url = "http:hogehoge" 5res = requests.get(url) 6html = res.text 7root = lxml.html.fromstring(html)
動作するのはいいのですが,なぜ挙動が違うのでしょうか.
1つ目のコードで取得できるwebページと取得できないwebページでは何が違うのか,そしてlxmlとrequestsではurlにアクセスする際にどういう挙動の違いがあるのかをご教授いただきたいです.
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/04 06:45