精华内容
下载资源
问答
  • 用python爬取网页图片

    2021-03-23 17:38:25
    用python爬取网页图片 首先导入两个库 import requests import re 导入方法,在终端依次输入以下指令 pip install requeste pip install re 废话不多说,上代码 import requests import re def getHtml(url): ...

    用python爬取网页图片
    首先导入两个库

    import requests
    import re
    

    导入方法,在终端依次输入以下指令

    pip install requeste
    
    pip install re
    

    废话不多说,上代码

    import requests
    import re
    
    
    def getHtml(url):
        try:
            # 获取网页
            r = requests.get(url)
            # 判断返回的Response类型状态是不是200。如果是200,他将表示返回的内容是正确的,如果不是200,就会产生一个HttpError的异常
            r.raise_for_status()
            # 编码类型
            r.encoding = 'utf-8'
            # 打印趴下来的网页
            # print(r.text)
            return r.text
        except:
            # 抛出异常
            return "error"
    
    
    # 以逐浪小说网为例,里面图片不多,比较适合做示范
    def getImg(html):
        # 正则表达式匹配趴下来的网页中以http开头,以html结尾的内容
        reg = r'src="(http.+?\.jpg)"'
        # 把reg中的内容转成一个列表
        imglist = re.findall(reg, html)
        i = 0
        # 这里做的判断主要是因为提取出来的img地址中的第12-56有两个地址,产生了异常,无法下载图片,不理解的话可以在打印imglist看一下
        listi = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 57, 58, 59, 60, 61]
        for url in imglist:
            if i in listi:
                # 在列表中的的图片地址是正常的
                response = requests.get(url)
                i = i + 1
            else:
                # 不在列表中的图片地址是异常的,所以要进行截取
                reg1 = imglist[i]
                reg2 = reg1[46:]
                response = requests.get(reg2)
                i = i + 1
            # 打开文件夹,把图片存进去
            with open(".\\wb\\" + str(i) + ".jpg", "wb") as fd:
                fd.write(response.content)
                print('图片', i, "保存成功\n")
    
    
    html = getHtml("http://www.zhulang.com/")
    getImg(html)
    

    注意:
    1、爬取的图片地址有时候会有问题,所以如果图片不展示的话,可以看看是不是地址错误
    2、有些网页需要添加请求头或者其他一些参数的,可以自行去了解
    3、有些网站设置了反爬虫的话,暂时还不清楚怎么解决

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

    千次阅读 2017-03-06 17:20:25
    使用Python爬取网页图片 李晓文 21 天前 近一段时间在学习如何使用Python进行网络爬虫,越来越觉得Python在处理爬虫问题是非常便捷的,那么接下来我就陆陆续续的将自己学习的爬虫知识分享给大家。 首先...
    使用Python爬取网页图片

    使用Python爬取网页图片

    李晓文 李晓文
    21 天前

    近一段时间在学习如何使用Python进行网络爬虫,越来越觉得Python在处理爬虫问题是非常便捷的,那么接下来我就陆陆续续的将自己学习的爬虫知识分享给大家。

    首先在进行实战前,我们需要了解几个常用的函数和正则表达式:

    一、几个常用的函数

    这里介绍的函数是来自于requests扩展包,他们是findall,search和sub函数:

    findall(pattern, string, flags=0)

    pattern:为正则表达式

    string:为字符串

    search(pattern, string, flags=0)

    pattern:为正则表达式

    string:为字符串

    findall与search的区别

    findall将遍历所有满足条件的内容,而search一般与group(n)搭配使用,选出满足条件的某个内容。

    sub(pattern, repl, string, count=0, flags=0)

    pattern:为正则表达式

    repl:需要替换的内容

    string:为原字符串

    二、几个常用的爬虫正则表达式

    Python爬虫最常用的三个正则表达式为点号,星号,问号和圆括号:

    点号:匹配除“\r\n”之外的任何单个字符,可以理解为一个占位符

    举例:

    x = '1q2wwyxliuwyx3e4rwyxshunwyx1q2wwyxxiangwyx3e4r'

    re.findall('wyx.',x)

    Out[1]: ['wyxl', 'wyx3', 'wyxs', 'wyx1', 'wyxx', 'wyx3']

    返回"wyx"和紧跟其后的第一个字符

    re.findall('wyx...',x)

    Out[2]: ['wyxliu', 'wyx3e4', 'wyxshu', 'wyx1q2', 'wyxxia', 'wyx3e4']

    返回"wyx"和紧跟其后的第一第二个字符

    所以可以将点号(.)理解为一个占位符,而且这个占位符可以代表一切字符。

    星号:匹配前一个字符任意次

    x = '1q2wwyxliuwyx3e4rwyxshunwyx1q2wwyxxiangwyx3e4r'

    re.findall('wyx*',x)

    Out[3]: ['wyx', 'wyx', 'wyx', 'wyx', 'wyxx', 'wyx']

    星号(*)前一个字符为x,所以返回结果中可以找到x的任意次,x字符串中有两个连续的x,所以返回结果中第5个元素就会有两个x。

    问号:匹配前一个字符0次或1次,与星号的不同在于其最多匹配一次。

    x = '1q2wwyxliuwyx3e4rwyxshunwyx1q2wwyxxiangwyx3e4r'

    re.findall('wyx?',x)

    Out[4]: ['wyx', 'wyx', 'wyx', 'wyx', 'wyx', 'wyx']

    结果显示,返回结果的第五个元素仅含有一个x。

    点星组合(.*):贪婪算法,尽可能多的匹配数据

    re.findall('wyx.*wyx',x)

    Out[5]: ['wyxliuwyx3e4rwyxshunwyx1q2wwyxxiangwyx']

    从返回的结果就可以理解“贪婪”的概念了,结果一次性返回wyx与wyx之间的所有内容。

    点星问组合(.*?):非贪婪算法,尽可能少的匹配数据

    re.findall('wyx.*?wyx',x)

    Out[6]: ['wyxliuwyx', 'wyxshunwyx', 'wyxxiangwyx']

    而这次的返回结果就完全不同于上面的结果,它尽可能少的返回满足正则表达式的结果,从而将1大串切割为3小串。

    圆括号():返回所需信息

    re.findall('wyx(.*?)wyx',x)

    Out[7]: ['liu', 'shun', 'xiang']

    很明显,通过括号的操作,就直接将想提取的内容抠下来了。

    三、半自动化的图片爬虫

    本次爬虫的实验来自于当当网有关Python书籍的url,即:

    url = Python-当当网


    在爬取该网页的图片之前,我们需要了解一下网页源代码中有关图片的模式:


    发现关于图片的链接存在两种模式,即"<img src='(.*?)' alt"和"img data-original='(.*?)' src",所以我们需要按两种方式提取图片。

    首先,将网页源代码复制出来,粘贴到Pic文本文件中,并将内容读取到Content对象中:

    f = open('Pic.txt','r')

    Content = f.read()

    f.close

    其次,分别用两种模型提取出图片链接

    pic_url = re.findall("<img src='(.*?)' alt",Content)

    print pic_url


    pic_url2 = re.findall("img data-original='(.*?)' src",Content)

    print pic_url2


    以上两种模式的图片链接已下载好,接下来就是将这两个列表合并:

    pic_url.extend(pic_url2)

    最后,通过遍历pic_url中的图片链接,将图片下载并保存到指定的目录下:

    import requests #导入所需扩展包

    i = 0

    for url in pic_url: #开始遍历pic_url中的每个元素

    print 'Downloding: ' + url

    Pic = requests.get(url)

    fp = open('Pic\\' + str(i) + '.jpg','wb') #保存文件

    fp.write(Pic.content) #将文件写入到指定的目录文件夹下

    fp.close()

    i = i + 1

    我们看看Pic文件夹是否含有下载好了的文件呢?


    Perfect,网页中的图片全都下载下来啦,很简单吧。有兴趣的同学还不赶快动手试试?

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

    展开全文
  • 用python 爬取网页图片

    2015-04-01 09:58:00
    import re import string import sys import os import urllib url="...#这个是某贴吧地址 imgcontent=urllib.urlopen(url).read()#抓取网页内容 reg = r'src="(.+?\.jpg)" pic_ext' imgre ...
    import re
    import string
    import sys
    import os
    import urllib
    
    url="http://tieba.baidu.com/p/2521298181"#这个是某贴吧地址
    imgcontent=urllib.urlopen(url).read()#抓取网页内容
    reg = r'src="(.+?\.jpg)" pic_ext'
    imgre = re.compile(reg)
    urllist = imgre.findall(imgcontent)
    #urllist=re.findall(r'src="(http.+?\.jpg)"',imgcontent,re.I)#提取图片链接
    if not urllist:
    	print 'not found...'
    else:
    	#下载图片,保存在当前文件夹的pythonimg文件夹下
    	filepath=os.getcwd()+'\pythonimg'
    	if os.path.exists(filepath) is False:
    		os.mkdir(filepath)
    	x=1
    	print u'爬虫准备就绪...'
    	for imgurl in urllist:
    		temp= filepath + '\%s.jpg' % x
    		print u'正在下载第%s张图片' % x
    		print imgurl
    		urllib.urlretrieve(imgurl,temp)
    		x+=1
    	print u'图片完成下载,保存路径为'+filepath


    为方便调试python程序,以下贴出打印文件、模块以及行号的功能:

    import sys
    
    print sys._getframe().f_code.co_filename #获取当前文件名称;
    print sys._getframe().f_code_name #获取函数名;
    print sys._getframe().f_lineno  #当前行


    展开全文
  • (1)初学Python-只需4步,爬取网站图片https://www.jianshu.com/p/11454866bc15[START]第一步:获取网页的源代码urllib.request.urlopen().read()这个方法是获取到请求的这个URL所返回的网页源代码信息数据,返回值...

    (1)初学Python-只需4步,爬取网站图片

    https://www.jianshu.com/p/11454866bc15

    [START]

    2020010119525981.png

    第一步:获取网页的源代码

    urllib.request.urlopen().read()

    这个方法是获取到请求的这个URL所返回的网页源代码信息数据,返回值是bytes类型时,要将其转换成utf-8才能正常显示在python程序中,所以还要调用decode()方法进行解码。

    最终得到的就是平时我们编写或者查看的页面源代码了。

    20200101195343863.png

    这里可能会出现的报错信息:

    1.Non-ASCII character ‘xe5’

    原因:这是编码的问题,Python的默认编码文件是用的ASCII码,而你的Python文件中使用了中文等非英语字符。

    解决方法:在第一行添加  # – coding: UTF-8 –

    2.如果爬取的网站是https协议的,需要在请求时会验证一次SSL证书

    解决方法:全局加上以下代码

    20200101195415432.png

    第二步:过滤出图片URL

    这一步至为关键,因为在一堆网页源代码中,要有效找出目标对象(图片URL)的特点(结构特征)才行。怎么找?

    1.了解图片URL的html表达方式

    学过html的同学都知道,图片的标签是

    8206.html,src属性定义其图片源路径。

    2.使用正则表达式进行匹配

    我也没有详细了解过正则表达式各个符号的含义,这里不展开讲。

    这里的正则表达式的意思是,过滤出所有标签是

    8206.html,旗下的src属性,且属性值是以http开头jpg结尾的源代码。

    每个网站的规则都不一样,不能直接套用代码。

    简单例子,你要爬取的网站图片是png格式,直接拿代码去运行肯定是什么都抓不到的。

    再例如,我在一开始设定的规则中是没有加上http开头的,结果抓到一些图片URL是相对路径的数据,导致后面是无法访问URL报错的。

    3.将所有匹配规则的代码存入list里

    re.compile()  根据包含的正则表达式的字符串创建模式对象(直接拿来用就好)

    findall()  返回string中所有与pattern相匹配的全部字串,返回形式为数组

    20200101195441856.png

    第三步:定义图片保存路径

    这一步看个人习惯,如果只是少数几张图片,就没有必要新建一个文件夹给图片都保存整理到一起。

    不过如果是爬一个网站或一个网页相对数量级比较大的时候,建议还是全部整理到一个文件夹里面,好管理嘛。

    “新建文件夹”这个基础的操作,就调用os.makedirs()方法即可。

    watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0p4dWZlQ2Fyb2w=,size_16,color_FFFFFF,t_70

    但是这里有3个注意的点:

    1.新建文件夹,你是希望指定路径还是在当前路径下创建?

    指定路径:很简单,直接把你想要创建文件夹的路径复制出来,加上新建文件夹的名称,作为参数直接写到方法里即可。

    eg.(windows)

    当前路径:先获取当前的目录,再拼接上新建文件夹的名称。

    获取当前目录的方式是:os.getcwd()

    20200101195540812.png

    2.新建的文件夹是否已存在?

    相同目录下不能有重名的文件/文件夹,如果直接创建的话,就会报错:文件已存在,无法创建。

    20200101195611734.png

    3.是否需要考虑windows和macOS的路径表述方式不一样?

    注意一下,两个操作系统对于路径的表述方式是不一样的,尤其是指定路径,要输入正确的路径才能创建成功。

    第四步:将图片URL保存到文件夹下

    现在,图片URL已经存入到list里(见第2步)、保存图片的文件夹也有了,就可以将虚拟的图片url转换成真实的png或jpg文件。

    urllib.request.urlretrieve(url, filename)  这个方法就是将远程数据下载到本地

    url:远程或本地的url,对应这里就是要放图片URL了。

    filename:保存的完整地方,即“路径+文件名”。如果未指定该参数,urllib会生成一个临时文件来保存数据。

    这里要注意3个地方:

    1.图片的文件名怎么生成?

    建议使用最简单的方式来生成文件名:递增数字+图片后缀

    这里就再次说明要新建文件夹的重要性,新建文件夹后,这个目录下是全新空白的,不用考虑生成的文件名会不会和原有文件名重复的问题。

    递增数字:譬如说,第一张图片叫“1.jpg”,第二张图片叫“2.jpg”,如此类推。

    2.一般网站爬下来的图片是多张的,如何批量处理?

    这里也说明了,为什么要将抓取到的图片url存到list里面了。给list一个循环,每个url调用一次urllib.request.urlretrieve()方法,那就相当于每个url都保存为1个图片。

    20200101203935460.png

    3.报错:urllib2.HTTPError: HTTP Error 403: Forbidden

    原因:一些网站是禁止爬虫做的处理

    解决方法:可以在请求加上头信息,伪装成浏览器访问User-Agent(具体的信息可以通过火狐的FireBug插件查询),再去请求。

    20200101204001651.png

    其他问题

    1.没有自动安装或导入第三方库,如urllib.request

    报错:ImportError: No module named request

    解决方法:安装第三方库,Mac机上在安装python3之后,系统是自动安装了pip3,所以我们只需要每次使用pip3即可安装(Windows请自行百度,注意区分Python2和Python3)

    敲入安装命令:pip3 install requests

    2.千万千万要注意windows和mac系统的路径表达方式不一样

    因为我是两个操作系统切换着用,所以很头痛有这个问题,每次要记得改就是了,没技术难度。或者再加一层系统判断进行兼容就好了。

    [END]小程序

    展开全文
  • import reimport stringimport sysimport osimport urlliburl="http://tieba.baidu.com/p/2521298181"#这个是某贴吧地址imgcontent=urllib.urlopen(url).read()#抓取网页内容reg = r'src="(.+?\.jpg)" pic_ext'imgre...
  • python爬取网页图片

    2021-07-30 20:22:44
    python爬取网页图片 爬取数据一般分为三步: 爬取网页信息 解析爬取来的数据 保存数据 找到自己想要爬取的网页,找到user-agent 代码实现 首先导入需要用到的包 from bs4 import BeautifulSoup #网页解析,获取...
  • 先把原理梳理一下:首先我们要爬取网页的代码,然后从中提取图片的地址,通过获取到的地址来下载数据,并保存在文件中,完成。下面是具体步骤:先确定目标,我挑选的是国服守望先锋的官网的英雄页面,我的目标是爬取...
  • 上一讲我们说了如何把网页的数据通过分析后存储到数据库,我们这次讲如何将网页上的图片提取并下载到本地。思路如下:我们本次要爬取的是昵图网首页的图片。1、首先分析我们要爬取网页的代码结构,每个网页的代码...
  • 利用python爬取网页图片

    千次阅读 2017-04-06 11:09:49
    学习python爬取网页图片的时候,对于屌丝男士来说,可以通过这个工具去批量下载你想要的美女图片,哈哈,楼主只是在练习爬取网页图片的时候,顺便爬取美女的照片哦 开始正题: 我从尤物网去爬取我喜欢的女神的...
  • 首先我们进入搜狗图片http://pic.sogou.com/,进入壁纸分类(当然只是个例子Q_Q),因为如果需要爬取某网站资料,那么就要初步的了解它…进去后就是这个啦,然后F12进入开发人员选项,笔者的是Chrome。右键图片>>...
  • 写一个可以爬取网页图片的简单爬虫。我们先打开这个网页,查看想要爬取类容的特征。点击想要爬取的图片,审查元素。查看图片地址,寻找地址的限定。想要爬取的图标查看图片的地址踩好点后可以着手编写我们的爬虫。...
  • Python 爬取网页图片

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

    千次阅读 2018-10-18 20:00:09
    本文利用Python3爬取网上图片数据,并保存到本地。具体代码如下图所示 # author:首席鉴黄师 import re import requests #url url = 'https://tieba.baidu.com/p/5915762447' #模拟浏览器请求资源 we_data = ...
  • 分享一下之前学习Python网络爬虫爬取图片的经验,附上源码,欢迎大家参考指正。
  • python 版本 2.7.6pip install bs4pip install html5libspider.py :import requestsfrom bs4 import BeautifulSoupimport osimport urllibprefix = 'http://pictogram2.com'response = requests.get(prefix + '/?...
  • Python爬取网页数据

    万次阅读 多人点赞 2018-08-29 17:20:35
    都说python爬网页数据方便,我们今天就来试试,python爬取数据到底有多方便 简介 爬取数据,基本都是通过网页的URL得到这个网页的源代码,根据源代码筛选出需要的信息 准备 IDE:pyCharm 库:requests、...
  • 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 ...
  • HTML 或 XML 文件中提取数据的 Python 库.它能够通过你喜欢的转换器实现惯用的文档...爬取该地址的 图片。。。URL = 'http://www.ifanxu.com/alipay_red_packet/'headers = {'User-Agent': 'Mozilla/5.0 (Windows...
  • 利用Python爬取网页图片

    千次阅读 2019-05-20 21:44:23
    首先我们进入搜狗图片http://pic.sogou.com/,进入壁纸分类(当然只是个例子Q_Q),因为如果需要爬取某网站...发现我们需要的图片src是在img标签下的,于是先试着 Python 的 requests提取该组件,进而获取img的s...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 20,911
精华内容 8,364
关键字:

用python爬取网页图片

python 订阅