前提・実現したいこと
スクレイピングプログラムを用いて正しく画像を取得し表示したい
【前提】
Python3 + selenium(PhantomJS or ChromeDriver) + Beautifulsoupを利用したスクレイピングのプログラムを作っています。
比較的構造が似ているサイト、全く似ていないサイトなど各種いくつかあり、それぞれグループに分け
対応したクラスを作り、実行ファイルからクラスのインスタンスを生成、処理を走らせています。
取得するデータは何かの値や日付、htmlのソース、画像等です。
発生している問題・エラーメッセージ
上記プログラムを実行した際に、対象サイトの大部分はスクレイピング及びデータ取得は可能なのですが
一部のサイトは、取得した画像を見るとファイルとしては存在するものの中身を見れません。
エクスプローラー上でもブラウザ上でも見ることができません。
色々試行してみましたが、他に何か考えるべきことはありますでしょうか。
該当のソースコード
即席でダウンロードする部分だけですが
python
1from urllib.request import Request 2from urllib.request import urlopen 3 4url = "https://www.city.miyazaki.miyazaki.jp/gyousei/html/reiki/H214902500027/778_0002.gif" 5request = Request(url) 6req = urlopen(request) 7with open("download_file.gif", "wb") as f: 8 f.write(req.read())
試したこと
既存のサイトの中でも同様の事象が発生しましたが、その時はcookiesの値を見ていたことが分かり解決できました。
今回もと思いseleniumを使いcookiesを取得、add_header()で付与してみましたが、結果は変わらずでした。
ダウンロードできない具体的なURLを提示及び画像を提示いただけないと回答できません
ダウンロードしたファイルが画像ではなくHTMLになっていませんか?テキストファイルとして内容をみてみてはいかがでしょうか?
>tiitoi様
ご指摘ありがとうございます。
失礼いたしました。
こちらに記載しても良いのでしょうか(違ったらすみません。)
URL先:https://www.city.miyazaki.miyazaki.jp/gyousei/html/reiki/H214902500027/H214902500027.html
画像リンク:https://www.city.miyazaki.miyazaki.jp/gyousei/html/reiki/H214902500027/778_0002.gif
URL先にある画像を取得したいです。よろしくお願いします。
>t_obara様
ありがとうございます。
.gifで取得出来ていたと思います。エディタで開いた際、サポートしていない形式などと表示された記憶があります。ペイントでも同様でした。
実際に画像リンクの方を指定して、ご提示されたコードで試すと、
$> ls -la donwload_file.img
-rw-r--r-- 1 t_obara staff 189 3 20 17:26 donwload_file.img
$> file donwload_file.img
donwload_file.img: HTML document text, ASCII text, with no line terminators
$> cat donwload_file.img
<html><head><title>Request Rejected</title></head><body>The requested URL was rejected. Please consult with your administrator.<br><br>Your support ID is: 15508996576948072097</body></html>
となるので、gifではないですね。
>t_obara様
お世話になります。
検証までしてくださり、ありがとうございます。
すみません、即席のコードから変更いたしました。
よろしければご確認ください。よろしくお願いいたします。
何を確認するのでしょうか?まずは貴殿が確認し、その結果をご提示されるのがよろしいかと思います。
>t_obara様
そうですね、ありがとうございます。
回答1件
あなたの回答
tips
プレビュー