<事象説明>
"urllib.error.HTTPError: HTTP Error 403: Forbidden"エラーは
閲覧権限がないを意味する。
サイト側がブラウザ以外のアクセスを拒否する設定になっている場合に起きる。
<解決方法>
ヘッダーをつけて、ブラウザに偽装する
<コード例1>.py
url = 'https://www.a.com/abc.csv'
save_path = '\savename.csv'
opener=urllib.request.build_opener()
opener.addheaders=[('User-Agent','Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1941.0 Safari/537.36')]
urllib.request.install_opener(opener)
urllib.request.urlretrieve(url, save_path)
<コード例2>.py
opener = urllib.request.build_opener()
opener.addheaders = [('User-Agent',
'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1941.0 Safari/537.36')]
urllib.request.install_opener(opener)
for img in img_nodes:
if img.get('file') is not None:
img_url = img.get('file')
ID = img.get('id')
line = str(count) + "\t" + img_url + "\n"
img_meta.write(line)
try:
#urllib.request.urlretrieve(img_url, "./output/image/" + str(count) + ".jpg") # 画像を一つづつダウンロード
#urllib.request.urlretrieve(img_url, "./output/image/" + ID + ".jpg")
urllib.request.urlretrieve(img_url, "./output/image/" + ID + ".jpg")
except urllib.request.URLError:
print("Error opening URL")
count += 1