python从网络抓取照片并保存到本地实例

落日映苍穹つ 2022-05-24 11:59 325阅读 0赞

下面的实例是使用python从网络抓取图片并保存到本地的代码,粘贴在此,供大家交流学习。

程序思路如下:

(1)从excel中依次读取事项id,

(2)然后拼接成图片的url,

(3)据此url请求图片所在网页html,

(4)在其中查找图片tag并进行处理,

(5)请求图片并保存到本地,

(6)将图片名称写到对应事项id所在行的列。

用到的重要类(函数)包括:request.get,xpath,urllib.request.urlretrieve等

  1. import os
  2. import xlrd
  3. import xlwt
  4. import requests
  5. import urllib
  6. from lxml import html
  7. from xlutils.copy import copy
  8. def get_item_info_url(itemid, oldWebId):
  9. return 'http://www.zjzwfw.gov.cn/zjzw/service/list/showItem.do?code=' \
  10. + itemId + '&webId=53&id=1&oldwebid=' + oldWebId
  11. def get_img_src(url):
  12. page = requests.get(url)
  13. tree = html.fromstring(page.text.encode('utf-8'))
  14. src = tree.xpath('//img/@src')
  15. imgsrc = ''
  16. if len(src) > 0:
  17. if len(src) == 1:
  18. format = src[0].split('.')[-1]
  19. if format == 'gif':
  20. return []
  21. else:
  22. imgsrc = src[0]
  23. elif len(src) == 2:
  24. imgsrc = src[1]
  25. filename= imgsrc.split('/')[-1]
  26. return [imgsrc, filename]
  27. else:
  28. return []
  29. def save_picture_from_url(img_l):
  30. if img_l == []:
  31. return ''
  32. else:
  33. urllib.request.urlretrieve(img_l[0], ws + '/itemsImg/img/' + img_l[1])
  34. return img_l[1]
  35. if __name__ == '__main__':
  36. ws = os.getcwd()
  37. xlsPath = ws + '/itemsImg/items.xls'
  38. workbook = xlrd.open_workbook(xlsPath)
  39. # 获取所有sheet
  40. #print(workbook.sheet_names()) # [u'sheet1', u'sheet2']
  41. sheet1 = workbook.sheet_by_index(0)
  42. rowcount = sheet1.nrows
  43. #print(rowcount)
  44. wb = copy(workbook)
  45. # 通过get_sheet()获取的sheet有write()方法
  46. wsheet = wb.get_sheet(0)
  47. for r in range(rowcount):
  48. itemId= sheet1.cell(r,0).value
  49. oldWebId = sheet1.cell(r,1).value
  50. #itemName = sheet1.cell(r,2).value
  51. #itemDept = sheet1.cell(r, 3).value
  52. if oldWebId is not '':
  53. url = get_item_info_url(itemId, oldWebId)
  54. src = get_img_src(url)
  55. filename = save_picture_from_url(src)
  56. if filename != '':
  57. wsheet.write(r, 4, filename)
  58. print('current item id:' + itemId)
  59. wb.save(xlsPath)

发表评论

表情:
评论列表 (有 0 条评论,325人围观)

还没有评论,来说两句吧...

相关阅读

    相关 PHP抓取远程图片本地保存

    最近在工作中需要开发了一个用户素材功能,里面需要将网上的各种图片素材进行本地化存储。于是在网上找了一些相关资料,并根据自身开发需要,整理了一下主要的逻辑代码。 /