1. # coding=utf-8
  2. """根据搜索词下载百度图片"""
  3. import re
  4. import sys
  5. import urllib
  6. import requests
  7. def get_onepage_urls(onepageurl):
  8. """获取单个翻页的所有图片的urls+当前翻页的下一翻页的url"""
  9. if not onepageurl:
  10. print(\'已到最后一页, 结束\')
  11. return [], \'\'
  12. try:
  13. html = requests.get(onepageurl).text
  14. except Exception as e:
  15. print(e)
  16. pic_urls = []
  17. fanye_url = \'\'
  18. return pic_urls, fanye_url
  19. pic_urls = re.findall(\'"objURL":"(.*?)",\', html, re.S)
  20. fanye_urls = re.findall(re.compile(r\'<a href="(.*)" class="n">下一页</a>\'), html, flags=0)
  21. fanye_url = \'http://image.baidu.com\' + fanye_urls[0] if fanye_urls else \'\'
  22. return pic_urls, fanye_url
  23. def down_pic(pic_urls):
  24. """给出图片链接列表, 下载所有图片"""
  25. for i, pic_url in enumerate(pic_urls):
  26. try:
  27. pic = requests.get(pic_url, timeout=15)
  28. string = str(i + 1) + \'.jpg\'
  29. with open(string, \'wb\') as f:
  30. f.write(pic.content)
  31. print(\'成功下载第%s张图片: %s\' % (str(i + 1), str(pic_url)))
  32. except Exception as e:
  33. print(\'下载第%s张图片时失败: %s\' % (str(i + 1), str(pic_url)))
  34. print(e)
  35. continue
  36.  
  37.  
  38. if __name__ == \'__main__\':
  39. keyword = \'bus\' # 关键词, 改为你想输入的词即可, 相当于在百度图片里搜索一样
  40. url_init_first = r\'http://image.baidu.com/search/flip?tn=baiduimage&ipn=r&ct=201326592&cl=2&lm=-1&st=-1&fm=result&fr=&sf=1&fmq=1497491098685_R&pv=&ic=0&nc=1&z=&se=1&showtab=0&fb=0&width=&height=&face=0&istype=2&ie=utf-8&ctd=1497491098685%5E00_1519X735&word=\'
  41. url_init = url_init_first + urllib.quote(keyword, safe=\'/\')
  42. all_pic_urls = []
  43. onepage_urls, fanye_url = get_onepage_urls(url_init)
  44. all_pic_urls.extend(onepage_urls)
  45. fanye_count = 0 # 累计翻页数
  46. while 1:
  47. onepage_urls, fanye_url = get_onepage_urls(fanye_url)
  48. fanye_count += 1
  49. print(\'第%s\' % fanye_count)
  50. if fanye_url == \'\' and onepage_urls == []:
  51. break
  52. all_pic_urls.extend(onepage_urls)
  53. down_pic(list(set(all_pic_urls)))

 

版权声明:本文为zhoulixue原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/zhoulixue/p/8394959.html