精华内容
下载资源
问答
  • python爬取网页图片并下载保存本地

    千次阅读 2019-06-04 16:01:51
    python爬取网页图片并下载保存本地 以http://www.baidu.com为例 新建项目,路径如下 start.py #!/usr/bin/env python # -*- coding:utf-8 -*- import modules.my_request import modules.is_file_exist ...

    python爬取网页图片并下载保存本地
    以http://www.baidu.com为例
    新建项目,路径如下
    在这里插入图片描述
    start.py

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    
    import modules.my_request
    import modules.is_file_exist
    import modules.get_picture
    import conf.settings
    
    modules.is_file_exist.is_file_exist(conf.settings.my_file)
    
    modules.my_request.my_request_content('http://www.baidu.com')
    
    modules.my_request.my_request_result('http://www.baidu.com')
    
    # modules.get_picture.read_all()
    
    modules.get_picture.read_pictures()
    
    modules.get_picture.download_pictures()
    
    

    settings.py

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    
    import os
    import sys
    import platform
    
    if platform.system() == "Windows":
        #windows操作系统,数据库路径
        BASE_DIR = "\\".join(os.path.abspath(os.path.dirname(__file__)).split("\\")[:-1])
        #join 可以将元组、字符串、列表中的元素以指定的字符(分隔符)连接生成一个新的字符串
        #os.path.abspath
        database_path = os.path.join(BASE_DIR,"database")#数据库路径
        print('BASE_DIR'+BASE_DIR)
    
    else:
        BASE_DIR = "/".join(os.path.abspath(os.path.dirname(__file__)).split("/")[:-1])
        database_path = os.path.join(BASE_DIR, "database")
    
    '''http调用结果存储路径'''
    my_file = os.path.join(database_path, "http.txt")#会从第一个以”/”开头的参数开始拼接,之前的参数全部丢弃
    # print(my_file)
    
    '''数据裁剪后的图片链接存储文档路径'''
    my_picfile = os.path.join(database_path, "my_picfile.txt")
    # print(my_picfile)
    
    '''调用结果存储路径'''
    my_result = os.path.join(database_path, "my_result.csv")
    
    '''爬取图片存储路径'''
    my_pictures = os.path.join(BASE_DIR, "pictures/")
    print(my_pictures)
    

    database路径下的内容为自动生成,只需创建database文件夹
    get_picture.py

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    import re
    import conf.settings
    import modules.is_file_exist
    import urllib.request
    
    '''遍历http调用结果内容'''
    def read_all():
        my_file = open(conf.settings.my_file, "r", encoding='UTF-8')
        for line in my_file.readlines():
            # line = line.strip()
            if line !='\n':
                print(line)
        my_file.close()
    
    '''数据裁剪后的图片链接存储文档'''
    def read_pictures():
        reg = re.compile('http.*?png', re.S)
        read_pictures_my_file = open(conf.settings.my_file, "r", encoding='UTF-8')
        for line in read_pictures_my_file.readlines():
            if reg.search(line):
                # print(line)
                m1 = reg.findall(line)
                print(m1[0])
                modules.is_file_exist.is_file_exist(conf.settings.my_picfile)
                read_pictures_picfile = open(conf.settings.my_picfile, "a", encoding='UTF-8')
                read_pictures_picfile.write(m1[0]+'\n')
                read_pictures_picfile.close()
        read_pictures_my_file.close()
    
    '''下载图片'''
    def download_pictures():
        download_pic = open(conf.settings.my_picfile, "r", encoding='UTF-8')
        imgName = 0
        for imgPath in download_pic.readlines():
            try:
                f = open(conf.settings.my_pictures + str(imgName) + ".png", 'wb')
                f.write((urllib.request.urlopen(imgPath)).read())
                # print(imgPath)
                f.close()
            except Exception as e:
                print(imgPath + " error")
            imgName += 1
    
        print("All pictures have been download!")
    

    is_file_exist.py

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
    import os
    import conf.settings
    
    # print('is_file_exist'+conf.settings.my_file)
    # print('is_file_exist'+conf.settings.my_picfile)
    def is_file_exist(is_file):
        '''打开文件,若不存在则创建,判断文件是否为空,若为空数据初始化'''
        exist_file = open(is_file, "a")
        if is_file == conf.settings.my_file:
            file_exist = os.path.getsize(conf.settings.my_file)
            exist_file.close()
        elif is_file == conf.settings.my_picfile:
            file_exist = os.path.getsize(conf.settings.my_picfile)
            exist_file.close()
        else:
            file_exist=os.path.getsize(conf.settings.my_result)
            exist_file.close()
    
        if file_exist == 0:
            '''数据初始化'''
            inf = "\n"
            my_file = open(is_file, "a")
            my_file.write(inf)
            my_file.close()
    

    my_request.py

    # encoding:utf-8
    import urllib.request
    import conf.settings
    import requests
    
    
    '''获取http接口数据,存储到文档中'''
    def my_request_content(url):
        urllib.request.urlretrieve(url, conf.settings.my_file)
    
    '''获取http接口调用状态,存储到文档中'''
    def my_request_result(url):
        response = requests.get(url)
        my_request_result=open(conf.settings.my_result, "a", encoding='utf-8')
        s = "status_code"
        my_request_result.write(s+','+str(response.status_code)+'\n')
        my_request_result.write(u"url"+','+str(response.url)+'\n')
        my_request_result.write("headers"+','+str(response.headers)+'\n')
        my_request_result.write(",Cache-Control" + ',' + response.headers['Cache-Control'] + '\n')
        my_request_result.write(",Content-Encoding,"+response.headers['Content-Encoding']+ '\n')
        my_request_result.write(",Content-Type,"+response.headers['Content-Type']+ '\n')
        my_request_result.write(",Date,"+response.headers['Date'] + '\n')
        my_request_result.write(",Connection,"+response.headers['Connection'] +'\n')
        my_request_result.write("cookie,"+str(response.cookies)+'\n')
        # print('打印cookie信息'+response.cookies)  # 打印cookie信息
        # print('以文本形式打印网页源码'+response.text)  # 以文本形式打印网页源码
        # print('以字节流形式打印'+response.content)  # 以字节流形式打印
    

    效果:
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • Python爬取网络图片保存到本地文件夹主要内容第一步 引入库文件第二步 获取网页文档第三步 获取图片地址第四步 通过地址保存图片在main方法执行以上方法执行main()方法爬取结果 主要内容 经过上一次的爬虫实例,我...

    主要内容

    经过上一次的爬虫实例,我已经认识到了网络爬虫的基本步骤,这一次再次做了一套练习,爬取网页图片并且保存到本地。其基本步骤就是获取网页文档,查找目标img标签,再获取img标签的src值然后对图片进行保存~~,上次分析了怎么获取标签,这次就不再重复了。

    第一步 引入库文件

    import requests
    import bs4
    from bs4 import BeautifulSoup
    import os
    

    第二步 获取网页文档

    def getHtml(url):
        try:
            r = requests.get(url)
            r.raise_for_status()
            r.encoding=r.apparent_encoding
            return r.text
        except:
            print("连接出错了~~")
    

    第三步 获取图片地址

    循环图片的容器,将src值提取出来保存在列表里面。

    def getImg(text):
        urlList = []
        soup = BeautifulSoup(text,"html.parser")
        tag = soup.find("ul",class_="ali")
        for item in tag.children:
            if isinstance(item, bs4.element.Tag):
                img = item.find("img")
                src = img.get('src')
                print("获取到图片地址:"+src)
                urlList.append(src)
        return urlList
    

    第四步 通过地址保存图片

    为了更加直观看到图片被保存,将网络图片的图片名作为我们保存的图片命名,因为获取的src值链接没有“http:”这里把它拼接上,不然要报错呀~~

    def getImgFile(root,text):
        for url in getImg(text):
            picName = url.split('/')[-1]
            path = root + picName
            try:
                if not os.path.exists(root):
                    os.mkdir(root)
                if not os.path.exists(path):
                    r = requests.get("http:" + url)
                    with open(path, "wb") as f:
                        f.write(r.content)
                        f.close()
                        print(picName + "已经保存成功!")
                else:
                    print(picName + "已存在!")
            except:
                print("爬取失败!")
    

    第五步 在main方法执行以上方法

    def main():
        text = getHtml("https://www.ivsky.com/tupian/ziranfengguang/")
        root = "D://picture//"
        getImgFile(root,text)
    

    第六步 执行main()方法

    main()
    

    在这里插入图片描述
    在这里插入图片描述

    爬取结果

    以下就是爬取结果了~~噢咦,感兴趣的快体验一把吧!!!
    在这里插入图片描述

    展开全文
  • python爬取图片保存到本地 # -*- coding: utf-8 -*- import urllib import requests import os import codecs url = 'http://724.169pp.net/bizhi/2017/039/1.jpg' bytes = urllib.request.urlopen(url) f = ...

    python爬取的图片保存到本地

    # -*- coding: utf-8 -*-
    import urllib
    import requests
    import os
    import codecs
    url = 'http://724.169pp.net/bizhi/2017/039/1.jpg'
    bytes = urllib.request.urlopen(url)
    f = codecs.open(r'C:\\Users\\ME\\Desktop\\Python project\\pachong\\scrapy\\secondDemo\\photo\\' + '1.jpg', 'wb') # 代开一个文件,准备以二进制写入文件
    f.write(bytes.read())  # write并不是直接将数据写入文件,而是先写入内存中特定的缓冲区
    f.flush() # 将缓冲区的数据立即写入缓冲区,并清空缓冲区
    f.close() # 关闭文件
    
    展开全文
  • Python 爬取网页图片

    千次阅读 2017-11-28 11:36:32
    因为训练数据需求,需要爬取一些图片做训练。爬取的是土巴兔 网站的 家装图片 根据风格进行爬取图片 http://xiaoguotu.to8to.com/list-h3s13i0

         因为训练数据需求,需要爬取一些图片做训练。爬取的是土巴兔 网站的 家装图片 根据风格进行爬取图片 http://xiaoguotu.to8to.com/list-h3s13i0

         可以看到该页面上每一个图片点进去是一个套路链接,我想要爬取的是每一个套图内的所有图片。同时这个网页是翻页的,拉倒最后可以看到。

         因此我需要获取每一页的html,从这个html中得到所有套图的链接。下载所有套图。

        1、在Chrome浏览器中,点击F12进入调试界面,选中左上角的箭头,可以在页面点击时定位到,Element的位置,下图是点击第二页时定位到的位置。可以看到每一页都很有规律,第二页网址是  http://xiaoguotu.to8to.com/list-h3s13i0p2   ,而第二页在Element 的标签是 /list-h3s13i0p2 (在当前页看不到,可以翻页后再看第二页的标签),所以其他翻页的网页我们直接拼接就可以。总页数可以获,需要注意的是,如果总页数只有几页,最后一页不会有class = “last” 的标记。这也我们就可以遍历获取所有页的html地址。



       

     

           2、每一页中的图片套图的链接获取,跟步骤一一样,定位到套图位置,如下图,div 是各个套图,可以遍历所有套图,点击进去之后,可以不看到套图的地址是http://xiaoguotu.to8to.com/c10038739.html  跟图中红色标记相同,所以我们可以自己组成,链接套图的html

    l

         3、进入套图链接,同样上面的操作,定位到套图位置,但是此页面是翻页的,所以仔细查找可以找到一下内容,复制这些链接发现这就是大图的地址,

    我们直接把这些链接获得去下载图片即可

           


       最后上代码

        

    #coding=utf-8
    import urllib.request
    import time
    import os
    from lxml import etree
    from selenium import webdriver
    #time.sleep(2)
    def get_html(url,filename):
    
        #此处本来想用urllib.request 接口获得html的内容,但是获取后返现html格式有一些不对
        #导致后面不能使用xpath定位到所需要的元素,所以此处使用火狐重新打开后获取html,安装geckodriver.exe
        # 后面有空会查找一些原因,反复开网页太耗时
        browser = webdriver.Firefox()
        browser.get(url)
        html_source = browser.page_source
        #if(os.path.exists(filename)):
          #  os.remove(filename)
        with open(filename, "w", encoding="utf-8") as f:
            f.write(html_source)
        browser.close()
        time.sleep(0.1)
    #获取
    def getChildHtml(filename):
        with open(filename, "r", encoding="utf-8") as f:
            xml_str = f.read()
            html = etree.HTML(xml_str)
            #得到总页数
            action_items = html.xpath("body/div[2]/div[5]/div[1]/a[last()-1]")
            for action_item in action_items:
                if action_item.attrib is not None and "href" in action_item.attrib:
                    lastpage_name=action_item.attrib["href"]
                    p_index=lastpage_name.rfind("p")
                    startpage_name= lastpage_name[0:p_index]
                    total_page = lastpage_name[p_index+1:]
    
           # for index in range(int(total_page)):
                    index =1
            while index <= int(total_page):
                if(index == 1):  #第1页比较特别
                    childpage =  startpage_name
                else:
                    childpage = startpage_name + "p" + str(index)
                child_url = baseurl + childpage
                childfile_html = "html/"+ childpage +".html"
                get_html(child_url,childfile_html)
                SaveChildhtml(childfile_html)
                index += 1
    def SaveChildhtml(filename):
        with open(filename, "r", encoding="utf-8") as f:
            xml_str = f.read()
            html = etree.HTML(xml_str)
        child_htmls = html.xpath("body/div[2]/div[4]/div[2]/div")
        for child_html in child_htmls:
            if child_html.attrib is not None and "oldcid" in child_html.attrib:
                htmlname = child_html.attrib["oldcid"]
                image_url = "http://xiaoguotu.to8to.com/c" + htmlname + ".html"
                image_filename = "html/" + htmlname + ".html"
                get_html(image_url, image_filename)
                getimg(image_filename)
        time.sleep(0.1)
    
    #套图页面爬取所有图片
    def getimg(filename):
        with open(filename, "r", encoding="utf-8") as f:
            xml_str = f.read()
            html = etree.HTML(xml_str)
    
            savefold_items=  html.xpath("body/div[4]/div[1]/div[2]/div[1]/div[1]/div[1]/img")
            #文件夹暂时不判断重名了
            img_savepath = ""
            for savefold_item in savefold_items:
                if savefold_item.attrib is not None and "src" in savefold_item.attrib and "alt" in savefold_item.attrib:
                    savefold = savefold_item.attrib["alt"]
                    img_savepath=SavePath + savefold
                    isExists = os.path.exists(img_savepath)
                    if not isExists:
                        os.makedirs(img_savepath)
            action_items = html.xpath("body/div[3]/img")
            index=0
            for action_item in action_items:
                if action_item.attrib is not None and "src" in action_item.attrib and "alt" in action_item.attrib:
                    img_src = action_item.attrib["src"]
                    img_name = action_item.attrib["alt"]
                    #filetext = open("D:\\errortext.txt", 'a')
                    try:
                        urllib.request.urlretrieve(img_src, img_savepath+"\\"+img_name+ str(index) +".jpg")
                    except:
                        print(filename + "error")
                      # filetext.write(filename)
                      # filetext.write('\n')
                   # filetext.close()
                index = index + 1
                time.sleep(0.1)
    
    savename= "html/text.html"
    #url = "http://xiaoguotu.to8to.com/list-h3s9i0p3"
    
    SavePath = "D:\\img\\简约\\"     #图片文件保存位置
    #url = "http://xiaoguotu.to8to.com/c10037632.html"
    baseurl = "http://xiaoguotu.to8to.com/"
    url = "http://xiaoguotu.to8to.com/list-h3s13i0"
    get_html(url,savename)
    getChildHtml(savename)
    #getimg(savename)
    


         说明:因为本人只是爬取数据,不需要完全自动化的过程,所以代码中很多路径都写死了,所以如果有需求可以自己更改。

                    这个代码只是爬取的简约风格的所有图片,其他风格,需要手动更改  SavePath 设置不同风格的文件夹的,和风格开始的网页地址。

                 SavePath 的风格名称 同样可以从Element 中获取  ,懒得写了。



    展开全文
  • Python爬取网页图片

    千次阅读 2018-10-18 20:00:09
    本文利用Python3爬取网上图片数据,并保存到本地。具体代码如下图所示 # author:首席鉴黄师 import re import requests #url url = 'https://tieba.baidu.com/p/5915762447' #模拟浏览器请求资源 we_data = ...
  • 使用Python爬取网页图片

    千次阅读 2017-03-06 17:20:25
    使用Python爬取网页图片 李晓文 21 天前 近一段时间在学习如何使用Python进行网络爬虫,越来越觉得Python在处理爬虫问题是非常便捷的,那么接下来我就陆陆续续的将自己学习的爬虫知识分享给大家。 首先...
  • 分享一下之前学习Python网络爬虫爬取图片的经验,附上源码,欢迎大家参考指正。
  • 利用Python爬取网页中的图片内容,并将其转换为pdf格式的文件。
  • import requests # 导入网页爬取库 import os url = ...root = "D://pics//" # 图片保存位置 path = root + url.split('/')[-1] try: if not os.path.exists(root...
  • 作为一个Python新手,简单的编写了一个爬虫,获取网页图片数据,并下载到本地的 一小段程序 ,有更加优化方法可以共享哦!本人小白一名。 #!/usr/python2.7 # -*- coding:utf-8 -*- import re import urllib import...
  • python爬取网页图片

    2017-05-25 15:55:21
    当我们在网页上看到很多美图时,想要保存到本地,如果数量很多的话,一张张手动复制粘贴会很麻烦,现在用python可以实现一次性保存到本地。#coding:utf-8 import re #re模块主要包含了正则表达式 import urllib....
  • 先分析查找要爬取图片的路径 在浏览器F12 审查元素整体实现代码# -- coding:UTF-8 --import requestsfrom bs4 import BeautifulSoupimport os'''思路:获取网址获取图片地址爬取图片保存'''# 获取网址def getUrl...
  • python爬取网页所有图片保存到本地

    千次阅读 多人点赞 2019-12-12 11:07:57
    img_url print(img_full_url) # 遍历获取图片名称 for alt in all_img: print('alt = ', alt) # 定义存储位置 root = "D://PythonDownload/test/" alt = img['alt'] # 定义图片存储名称和格式 # path = root + img_...
  • Python爬取网页图片02

    千次阅读 2017-10-22 21:30:43
    #coding=utf-8 import re import time import os import _osx_support import urllib.requestbaseFiledirs='D:\img\images/' # baseFiledir='D:\img/...# 获取网页 def getHtml(url): page = urllib.request.urlopen(u
  • 没想到python是如此强大,令人着迷,以前看见图片总是一张一张复制粘贴,现在好了,学会python就可以用程序将...下面这篇文章主要给大家介绍了利用Python3.6爬取搜狗图片网页图片的相关资料,需要的朋友可以参考下。
  • 其实和爬取普通数据本质一样,不过我们直接爬取数据会直接返回,爬取图片需要处理成二进制数据保存成图片格式(.jpg,.png等)的数据文本。 现在贴一个url=...
  • python爬取图片然后保存在文件夹中

    千次阅读 2020-12-03 18:16:16
    python爬取图片然后保存在文件夹中 直接上代码: import os import requests import re def getimg(soup,i): print('http:'+ soup[0]) root = "D://tu//tu" # 保存的根目录 j=1 for k in soup: print(k) ...
  • 其中一种应用就是python爬取数据。今天环球网校的小编就来和大家讲讲python爬取数据。方法/步骤1、在做爬取数据之前,你需要下载安装两个东西,一个是urllib,另外一个是python-docx。2、然后在pyt...
  • python 爬取网页图片

    千次阅读 2014-07-06 14:20:28
    #下载图片,保存在当前目录的pythonimg文件夹下 filepath=os.getcwd()+'\pythonimg' if os.path.exists(filepath) is False: os.mkdir(filepath) x=1 print u'爬虫准备就绪...' for imgurl in urllist: ...
  • 关于python爬取网页

    千次阅读 多人点赞 2021-03-06 18:59:20
    之前在网上也写了不少关于爬虫爬取网页的代码,最近还是想把写的爬虫记录一下,方便大家使用吧! 代码一共分为4部分: 第一部分:找一个网站。 我这里还是找了一个比较简单的网站,就是大家都知道的...
  • 原标题:[Python爬虫]使用Python爬取动态网页-腾讯动漫(Selenium)好久没更新Python相关的内容了,这个专题主要说的是Python在爬虫方面的应用,包括爬取和处理部分上节我们说了如何获取动态网页中的jquery内容[Python...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,092
精华内容 7,636
关键字:

python爬取网页图片保存

python 订阅