質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

850閲覧

正しく画像を取得し表示したい

py_

総合スコア10

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2019/03/20 03:24

編集2019/03/20 09:24

前提・実現したいこと

スクレイピングプログラムを用いて正しく画像を取得し表示したい

【前提】
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()で付与してみましたが、結果は変わらずでした。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tiitoi

2019/03/20 03:27

ダウンロードできない具体的なURLを提示及び画像を提示いただけないと回答できません
t_obara

2019/03/20 03:32

ダウンロードしたファイルが画像ではなくHTMLになっていませんか?テキストファイルとして内容をみてみてはいかがでしょうか?
py_

2019/03/20 03:38

>t_obara様 ありがとうございます。 .gifで取得出来ていたと思います。エディタで開いた際、サポートしていない形式などと表示された記憶があります。ペイントでも同様でした。
t_obara

2019/03/20 08:30

実際に画像リンクの方を指定して、ご提示されたコードで試すと、 $> 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ではないですね。
py_

2019/03/20 09:27 編集

>t_obara様 お世話になります。 検証までしてくださり、ありがとうございます。 すみません、即席のコードから変更いたしました。 よろしければご確認ください。よろしくお願いいたします。
t_obara

2019/03/22 05:38

何を確認するのでしょうか?まずは貴殿が確認し、その結果をご提示されるのがよろしいかと思います。
py_

2019/03/22 11:39

>t_obara様 そうですね、ありがとうございます。
guest

回答1

0

自己解決

UserAgentの情報を付与することで可能になりました。
皆さま、ありがとうございました。

投稿2019/03/22 16:16

py_

総合スコア10

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問