Texture Haven Spider

前面写了一个博客来介绍一个插件:TextureHavenForBlender,博客可以参见这里。通过该插件,用户可以直接在Blender中查看并下载TextureHaven的所有纹理贴图,随后通过下载的纹理贴图构建材质。所有这些过程仅仅需要点击几个按钮。

该插件中,在Blender中查看TextureHaven的所有纹理贴图的步骤需要联网在TextureHaven的网站上下载图片。由于TextureHaven网站对爬虫有较高的管制,实现起来并不容易。这里采用scrapy框架先爬取TextureHaven上所有纹理的缩略图以及所有的下载链接,并为此构建一个数据库,最后使用Blender的python读取该数据库即可。

安装scrapy

安装Scrapy比较简单,直接使用pip进行安装即可。由于我们还需要使用scrapy下载图片,所以还需要安装pillow库:

pip install scrapy pillow

创建scrapy项目

使用命令创建项目TextureHavenSpider:

scrapy startproject THSpider

设置item

首先,我们需要设置item来保存需要爬取的数据(对应的数据的含义见代码),修改items.py文件为:

import scrapy

class TexturehavenspiderItem(scrapy.Item):
    main_path = scrapy.Field()
    categ_url = scrapy.Field()   # 纹理所属类别的网址
    categ_img = scrapy.Field()   # 纹理所属类别的缩略图网址
    categ_tag = scrapy.Field()   # 纹理所属类别的标签
    categ_path = scrapy.Field()  # 纹理所属列别的缩略图的本地地址

    textu_url = scrapy.Field()   # 纹理的网址
    textu_img = scrapy.Field()   # 纹理的缩略图网址
    textu_tag = scrapy.Field()   # 纹理标签
    textu_path = scrapy.Field()  # 纹理缩略图的本地地址

    textu_1k_url = scrapy.Field() # 1k纹理的网址
    textu_2k_url = scrapy.Field() # 2k纹理的网址
    textu_4k_url = scrapy.Field() # 4k纹理的网址
    textu_8k_url = scrapy.Field() # 8k为你的网址

开始爬取

首先在THSpider类中添加如下属性:

class THSpider(scrapy.spiders.Spider):
    name = "TextureHaven"

    allowed_domains = ["texturehaven.com"]

    start_urls = [
        "https://texturehaven.com/textures"
    ]

    main_url = "https://texturehaven.com/"
    main_path = "./Thumbails/"

此处main_url是在爬取过程中,网页需要跳转的基础的url,main_path是图像保存的位置。

随后修改parse函数为:

def parse(self, response):
    for sel in response.xpath("//div[@class='category-list-images']/ul/a"):
        img_url_text = sel.xpath("li/div/@style").extract()[0]
        categ_url = self.main_url + sel.xpath("@href").extract()[0]
        categ_img = self.main_url + re.search("\/files\/tex\_images\/thumbnails/([\w]*)\.jpg", img_url_text).group()
        categ_tag = sel.xpath("li/p/text()").extract()[0]
            
        yield   scrapy.Request(categ_url, callback=self.categ_parse, me
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值