ここらへんわかってないのでへぼいわ。
Referer・・今のページへリクエストしている直前のページのアドレス
参考:
ファイルをダウンロードする際、ユーザーエージェントを付与するが、そのほかに付与したい場合、以下のようにする。
from urllib.request import urlopen from urllib.request import Request def main(): url = "#" headers = {"User-Agent": ""} request = Request(url, headers=headers) # requestオブジェクトのヘッダーに情報を付与する # ここではRefererを付与。urlからうまく前のページのアドレスを取得する request.add_header("Referer", "") # もしcookieのデータがあれば以下のようにする # request.add_header("Cookie", "") # urlopenにて読み込む download_file = urlopen(request) # download_fileはgetheader("Content-Length")とすることでファイルサイズを得られる file_size = download_file.getheader("Content-Length") file_name = download_file.geturl() # 拡張子 file_extension = file_name[file_name.rfind("."):] # 保存 with open(f"tmp_file_size_is_{file_size}{file_extension}", "wb") as f: f.write(download_file) if __name__ == "__main__": main()
【追記】
cookieの値を与えたい場合、seleniumを利用する。
from urllib.request import urlopen from urllib.request import Request from selenium import webdriver def main(): driver = webdriver.PhantomJS() url = "#" driver.get(url) cookies = driver.get_cookies() cookie_data = {} for cookie in cookies: if cookie["name"] == "sample_cookie_name": cookie_data["sample_cookie_name"] = cookie["value"] headers = {"User-Agent": ""} request = Request(url, headers=headers) # requestオブジェクトのヘッダーに情報を付与する # ここではRefererを付与。urlからうまく前のページのアドレスを取得する request.add_header("Referer", "") # もしcookieのデータがあれば以下のようにする tmp_cookie_str = "" for k, v in cookie_data.items(): tmp_cookie_str += k + "=" + v + ";" if tmp_cookie_str.endswith(";"): tmp_cookie_str = tmp_cookie_str[:tmp_cookie_str.rfind(";")] request.add_header("Cookie", tmp_cookie_str) # urlopenにて読み込む download_file = urlopen(request) # download_fileはgetheader("Content-Length")とすることでファイルサイズを得られる file_size = download_file.getheader("Content-Length") file_name = download_file.geturl() # 拡張子 file_extension = file_name[file_name.rfind("."):] # 保存 with open(f"tmp_file_size_is_{file_size}{file_extension}", "wb") as f: f.write(download_file) if __name__ == "__main__": main()