大数据下的图片类别以及图片爬取详细的过程(一)

本来打算做图片与文字的相关性,后来模型没有全部弄好,爬取了200万张图片,如有需要图片可以留言,免费赠送。

大数据下的图片类别以及图片爬取详细的过程:在此分为两个部分的爬虫程序,一个是爬取类别,也就是图像的标注。第二个是利用这些类别(关键字)爬取图片的程序,这时候我拿到类别了,又写了第二个爬虫,这个爬虫留作为关键字的爬取图片使用,如我拿到第一个爬虫所爬下来的类别,时候我我把类别输第二个爬虫中去,此时,对应输入想要的图片的类别关键字,以及数量,便可从百度的图片库拿下来。

(一)第一个爬取图片类别和图片的过程:

首先我想要拿取图片的类别作为,图片与文字的相关性处理的数据,然后我需要找到我想要的网站,如图一所示。

其中的一个页面的URL:http://so.sccnn.com/search/%D1%F9%BB%FA/1.html

 

图一

 

对网站的url进行分析:

这是其中的一个页面的网址,而现在我需要拿取网站的所有类别,这时候我发现了一个规律:也就是前面和后面的也都是不变的,只需要改变里面的数字1-242页,这其中的数字:于是我可以这样写:

 

for i in range(1, 242):  # 拿到所有的列表的url


    Str_i = str(i) #转换为字符串


    url = 'http://so.sccnn.com/search/%D1%F9%BB%FA/' + Str_i + '.html'

 上面的代码这样写也就可以拿到全部的页面了。

 

现在开始对页面进行分析:

首先打开F12的谷歌调试器,另外我安装了一个xpth方便我直接解析数据。此时鼠标点击f12出现的调试页面,用搜索箭头定位,比如点击图像,那么这时候就可以定位到图片的路径标签。如图二所示。

 

 

                                             图二

当定位到标签路径时候,这时候鼠标右击点击copy可以看到里面有CopyXpath,这是在爬虫中需要获取图片路径解析的必要手段,过程如图三所示。

 当定位到标签路径时候,这时候鼠标右击点击copy可以看到里面有CopyXpath,这是在爬虫中需要获取图片路径解析的必要手段,过程如图三所示。

                                                图三

 此时我们需要对我们的xpath解析检验一下:在Chrome浏览器中有xpath辅助工具方便我们直接使用。过程如图四所示,并且xpath辅助工具在顶部可以看见,这里需要注意一点,因为有的网站直接用copy的Xpath不行,如图四我们很容易看见这时候右边是空的值,所以此时需要我们自己去写xpath。

 

                                                      图四

 

 此时再次验证自己写的xpath是否拿到数据,如图五所示:可以很清楚看见右边已经把每个类别拿到了。

 

 此时我们用同样的方法检验图片的路径,如图五:很清楚可以看到图片路径正确,如图五所示,前期工作准备完毕,这时候我们就可以开始写爬虫了。

 

                                                            图五

 

在准备爬虫之前还有你一个问题需要考虑。那就是这个一页有16个子目,总共242页,这时候我采用什么样的方法提取单个页面单个页面提取是一个问题,这时候我需要用到循环,并且如何从大类下面拿子类,如下代码所示:

 

下面是其中一个爬虫的源码,此爬虫只是用来获取这个网站的类别和图片。下面是这个爬虫的完整代码:

title就是我拿取得类别长度也就是16,因为一页16个类别展示,i为第页数,也就是说开始为16,当第二页时候,我从16到32之间取值,这样保证了我拿取得第几张图片,而我把n赋值为0时,因为每页拿取得都是从0-16之间的类别和图片,因为我的类别和图片是相对应的,所以多少张图片也是相对应。

 

import requests
from lxml import etree
import re
#文本信息保存在test.txt,也就是类别信息存储
file = open("test.txt", 'w', encoding='utf-8')
for i in range(1, 242):  # 循环拿到所有的列表的url
    Str_i = str(i)
    url = 'http://so.sccnn.com/search/%D1%F9%BB%FA/' + Str_i + '.html'
#url = "http://so.sccnn.com/search/%D1%F9%BB%FA/2.html"
    res = requests.get(url) #利用response响应获取URL
    content = res.content #拿取文本内容
    html = etree.HTML(content)
    # 数据解析
    title1 = html.xpath('//td/div/a/text()') #获取文本的类别
    desc = html.xpath('//td/div/a/text()')
    imgs = html.xpath('//td/div/a/img/@src')  #获取图片地址
   

 

 

 # 写入文件
    title=len(title1) #解析文件类别
    title = 0 + 16*i #从第一个页拿取
    x=title-16 #
    n = 0  #初始为零
    for m in range(x, title):
        # 描述要特别处理
        # 保存文本信息
        file.write(title1[n]+ "\n")
        # 下载图片
        with open('D:\Spideimages\\' + str(m) + '.jpg', 'wb') as fd:
            picture = requests.get(imgs[n + 1]).content
            fd.write(picture)
            print("成功下载%s.jpg" % m)
    # 关闭文件
        n=n+1
file.close()

 图片爬取类别工作完成。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值