python爬虫一:必应图片(从网页源代码中找出图片链接然后下载)

举报
用户已注销 发表于 2021/11/19 06:09:50 2021/11/19
1.7k+ 0 0
【摘要】 这里讲解最简单的爬虫:从网页源代码中找出图片链接然后下载 代码: #coding=utf-8#必应图片爬虫import reimport osimport urllib.requesturl = 'http://cn.bing.com/images/search?q=usb+pen&FORM=HDRSC2'coding ...

这里讲解最简单的爬虫:从网页源代码中找出图片链接然后下载

代码:


      #coding=utf-8
      #必应图片爬虫
      import re
      import os
      import urllib.request
      url = 'http://cn.bing.com/images/search?q=usb+pen&FORM=HDRSC2'
      coding = 'utf-8'
      thepath = 'D:\\'
      def get():
         try:
              html = urllib.request.urlopen(url).read().decode(coding)
          except:
             print('error')
             print(url)
             return
          title = re.search("<title>.*</title>", html).group()
          title = title[7:-20]
          pic_url = re.findall('http://.{1,100}.jpg|http://.{1,100}.png|http://.{1,100}.jpeg',str(html),re.IGNORECASE)
          pic_url = list(set(pic_url))
          path = thepath + title
         try:
              os.mkdir(path)
          except:
             return
          i = 1
         for each in pic_url:
             try:
                  pic= urllib.request.urlopen(each,timeout=10).read()
              except:
                 continue
              file = path + '\\' + title + str(i) + '.jpg'
              fp = open(file,'wb')
              fp.write(pic)
              fp.close()
              i=i+1
         if not os.listdir(path):
              os.removedirs(path)
             print('error')
             print(url)
      get()
  
 

解释:

(1)urlopen是打开url对应的网页,获取源代码

(2)title是网页标题,利用正则表达式从源代码中获取标题

(3)pic_url是图片url的列表,方法比较简单,直接取出以http://开头以jpg结尾的字符串,中间的长度在1-100之间,因为不同图片的url在网页源代码中是隔开的,所以这个简单的正则表达式匹配以jpg结尾的url的准确率很高,如果是jpeg等等,只要用re1|re2就行,但是对于一些奇怪的url,不以图片后缀作为图片url的后缀,那就找不到它

(4)path是要创建的文件夹路径,文件夹名字就是title

(5)再用urlopen就可以直接打开图片url下载图片,所有图片都用title1,title2...命名

(6)最后一步,如果创建了文件夹但是没有下载图片,就把文件夹删掉

文章来源: blog.csdn.net,作者:csuzhucong,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/nameofcsdn/article/details/76010849

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。