zoukankan      html  css  js  c++  java
  • Python爬虫抓取糗百的图片,并存储在本地文件夹

    思路:

    1.观察网页,找到img标签

    2.通过requests和BS库来提取网页中的img标签

    3.抓取img标签后,再把里面的src给提取出来,接下来就可以下载图片了

    4.通过urllib的urllib.urlretrieve来下载图片并且放进文件夹里面(第一之前的准备工作就是获取当前路径然后新建一个文件夹)

    5.如果有多张图片,不断的重复3-4

    由于爬虫写得少,通过自己的调试,终于写了出来了

    下面直接上代码:

     1 #coding = 'utf-8'
     2 import requests
     3 from bs4 import BeautifulSoup
     4 import urllib
     5 import os
     6 import sys
     7 reload(sys)
     8 sys.setdefaultencoding("utf-8")
     9 
    10 if __name__ == '__main__':
    11     url = 'http://www.qiushibaike.com/'
    12     res = requests.get(url)
    13     res.encoding = 'utf-8'
    14     soup = BeautifulSoup(res.text, 'html.parser')
    15     imgs = soup.find_all("img")
    16 
    17     _path = os.getcwd()
    18     new_path = os.path.join(_path , 'pictures')
    19     if not os.path.isdir(new_path):
    20         os.mkdir(new_path)
    21     new_path += '\ '
    22 
    23     try:
    24         x = 1
    25         if imgs == []:
    26             print "Done!"
    27         for img in imgs:
    28             link = img.get('src')
    29             if 'http' in link:
    30                 print "It's downloading %s" %x + "th's piture"
    31                 urllib.urlretrieve(link, new_path + '%s.jpg' %x)
    32                 x += 1
    33 
    34     except Exception, e:
    35         print e
    36     else:
    37         pass
    38     finally:
    39         if x :
    40             print "It's Done!!!"

    接下来上结果:

    python3中的版本,略有有一点点不同,就是下载图片的方法需要加上request,然后才能使用urlretrieve方法进行下载

     1 #!/usr/bin/python3
     2 #coding = 'utf-8'
     3 
     4 import requests
     5 from bs4 import BeautifulSoup
     6 import urllib 
     7 import os
     8 import sys
     9 #reload(sys)
    10 #sys.setdefaultencoding("utf_8")
    11 
    12 if __name__ == '__main__':
    13     url = 'http://www.qiushibaike.com/'
    14     res = requests.get(url)
    15     res.encoding = 'utf-8'
    16     print (res)
    17     soup = BeautifulSoup(res.text,'html.parser')
    18     #imgs = soup.find_all('img', attrs={'class': 'item_img'})
    19     imgs = soup.find_all('img')
    20 
    21     _path = os.getcwd()
    22     new_path = os.path.join(_path,'pictures\\')#需要添加斜杠,才能将图片放进单独的文件夹里面
    23     print(new_path)
    24 
    25     if not os.path.isdir(new_path):
    26         os.mkdir(new_path)
    27 
    28     #new_path = new_path + '\'
    29     #print (str(new_path))
    30 
    31     try:
    32         x = 1
    33         if imgs == []:
    34             print ("Done!")
    35             print (len(imgs))
    36         for img in imgs:
    37             link = img.get('src')
    38             link = 'http:' + link
    39             #print (link)
    40             if True:
    41                 print ("It's downloading %s" %x + "th's piture")
    42                 #python3如下使用urlretrieve
    43                 #_new111 = new_path + '%s.jpg'%5
    44                 #print (_new111)
    45                 urllib.request.urlretrieve(link,new_path + '%s.jpg' %x)
    46                 x += 1
    47 
    48     except Exception:
    49         pass
    50 #    else:
    51 #        pass
    52     finally:
    53         if x:
    54             print ("It's Done!")

    结果都是一样,就不再另外贴结果截图了

    总结:

    虽然一开始思路不清晰,而且对怎样把图片保存下来,都不是很熟

    但是经过自己的思考,只要思路清楚了,确定了方向就好办了,至于函数不会用的话,可以直接百度查,很方便的

    总而言之,写程序之前一定要有思路,边写边想思路是不行的,那样容易返工

    不过最后还是写出来了,哈哈

    也请大家来共同学习和指正

    ----------------------

    转载的话请大家注明出处哦,谢谢了

  • 相关阅读:
    DP(第三版(较简单))
    【テンプレート】洛谷
    【説明する】并查集
    第一篇博文
    cogs 2398 切糕 最小割
    cogs 1873 happiness 最大权闭合子图
    cogs 1274 最小截断 最小割唯一判定
    cogs 736 星际转移 最大流
    cogs 329 K-联赛 最大流
    cogs 2605 寒假ing
  • 原文地址:https://www.cnblogs.com/xuchao/p/6087676.html
Copyright © 2011-2022 走看看