質問編集履歴

1

kaitokimura

kaitokimura score 57

2017/09/09 21:33  投稿

urllibでの画像取得
Sierra 10.12.1
python3
特定のサイトから画像を取得したいのですが
URLを正しく取得できているのにもかかわらず画像がダウンロードできませんでした。
urlopenでつまっています。HTTPErrorが検出されてしまいます。
おかしいと思いそのURLにクロームから飛んでみた結果403エラーが。
やはりurlが正しく取得できていないのかなと思い
ホームページからクリックした場合その画像が存在するページに飛んでくれました。
このとき取得できたURLと飛べたURLは全く同じでした。
ためしに飛べたURLをコピーしてメモ帳に貼り付け文字列として
そのURLで飛ぼうとした結果403エラーが起きました。
全く同じURLなのになぜこのようなことがおきるのでしょうか??
これはセキュリティの問題でしょうか?
取得することはできないのでしょうか?
取得することはできないのでしょうか?
```lang-Python
from bs4 import BeautifulSoup
import urllib
from urllib import request
from urllib.request import urlopen
from urllib.error import URLError, HTTPError
import os
count=0
html = urllib.request.urlopen("指定ページ")
soup = BeautifulSoup(html)
headers={
       "User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:47.0) Gecko/20100101 Firefox/47.0",
       }
clas=soup.find_all(class_="img-responsive img-private")
# print(b)
# print(b.select())
for x in clas:
   # print(x)
   try:
       url=x.get('src')
      #指定ページの確認
       print('url='+url)
       count=count+1
       print(count)
       req = request.Request(url=url, headers=headers)
       img = request.urlopen(req)
       localfile = open(os.path.basename(url), 'wb')
       localfile.write(img.read())
       img.close()
       localfile.close()
   except HTTPError as e:
       print("HTTPError")
   except URLError as e:
       print("URLError")
```
  • Python

    13403 questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

  • MacOS(OSX)

    2506 questions

    MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

  • Python 3.x

    11202 questions

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

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る