1. import requests
    2. import pandas as pd
    3. import numpy as np
    4. import os
    5. import random
    6. import string
    7. import csv
    8. headers = {
    9. # 'Host': 'i.meizitu.net',
    10. 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    11. 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:55.0) Gecko/20100101 Firefox/55.0',
    12. 'Accept-Language': 'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3',
    13. 'Connection': 'keep-alive',
    14. 'Accept-Encoding': 'gzip, deflate',
    15. 'Upgrade-Insecure-Requests': '1',
    16. 'content-type': "application/json"
    17. }
    18. s = requests.session() # 保留会话
    19. # 下载图片
    20. def downIMG(url, fileName):
    21. try:
    22. url = str(url).split("?")[0]
    23. LAST = str(url).split(".")[-1]
    24. # 没有文件夹,则创建文件夹
    25. if not os.path.exists('D:/Image/' + fileName):
    26. os.mkdir('D:/Image/' + fileName)
    27. url_re = s.get(url.strip(), headers=headers)
    28. if url_re.status_code == 200:
    29. open("D:/Image/" + fileName + "/" + initImageName() + "." + LAST, 'wb').write(url_re.content)
    30. except:
    31. with open("image-run-error.csv", "a", encoding='utf-8') as csvfile:
    32. writer = csv.writer(csvfile)
    33. writer.writerow(fileName, url)
    34. # 随机生成文件名
    35. def initImageName():
    36. ran_str = ''.join(random.sample(string.ascii_letters + string.digits, 8))
    37. return ran_str
    38. if __name__ == '__main__':
    39. images = pd.read_csv("drug-image-url.csv")
    40. images.fillna('', inplace=True)
    41. images = np.array(images).tolist()
    42. for image in images:
    43. try:
    44. downIMG(image[2], image[0] + "," + str(image[1]).replace("*", "_"))
    45. except:
    46. continue