本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。

之前我们对使用Python语言进行网页爬取已经比较熟悉了。今天我们再对所用到的知识进行一下巩固,爬取彼岸桌面壁纸。之所以选择这个网站,是因为他的图片壁纸都是高分辨率的,非常适合作为桌面壁纸使用。网站是这样子滴

页面分析

1、通过一直点击 下一页 可以看到网站内的全部套图

2、通过爬取单个页面,可以获取到套图的首页地址

3、单个套图内图片上右键 -> 查看元素 即可拿到当前图片的地址。方法还是比较简单。

这样,就可以得到我们想要的资源。

关键源码

构造每个page的URL

        # 构造page url
        i = 2
        while i < 10:# 限制爬取页数
            url = 'http://www.netbian.com/meinv/index_' + str(i) + '.htm'  # http://www.netbian.com/meinv/index_2.htm
            print(url)
            self.urlManager.add_new_url(url)
            i = i + 1

xpath解析单个套图

    def parseArtical(self, html_content):
        # 存放数据
        res_data = set()
        ht = etree.HTML(html_content)
        htmls = ht.xpath('//div[@id="main"]/div[@class="list"]/ul/li/a[@target="_blank"]')
        for i in range(len(htmls)):
            node = htmls[i]
            url = 'http://www.netbian.com' + str(node.xpath('./@href')[0])
            # print(url+' '+title+' '+cover_pic_url)
            artical = Artical()
            artical.url = url
            res_data.add(artical)
        return res_data

下载图片资源并保存

    def dealObj(self):
        self.logger.debug('begin dealObj')
        artical = self.__blockList.remove()
        if artical is not None:
            if not self.__oldUrlList.contains(artical.url):
                # 处理artical
                # print(artical.url)
                html_content=self.downloader.download_text(artical.url, headers, 'gbk')
                ht = etree.HTML(html_content)
                imgs= ht.xpath('//div[@id="main"]/div/div/p/a[@target="_blank"]/img')
                for i in range(len(imgs)):
                    node = imgs[i]
                    url=node.xpath('./@src')[0]
                    alt=node.xpath('./@alt')[0]

                    # 创建要保存的目录
                    root = 'F:/netbian/'

                    path=root+alt.strip()+'.jpg'
                    data = HtmlDownloader().download_bin(url,headers)
                    if data is not None:
                        fpath = path
                        with open(fpath, 'wb') as f:
                            f.write(data)
                            f.close()
                        self.logger.info('下载图片成功:' + path)
                    else:
                        self.logger.info('下载图片失败:'+path)

                self.__oldUrlList.add(artical.url)

结果展示

可以看到,图片都是1920×1080的分辨率,制作精美非常养眼,用作桌面壁纸非常适合。

总结

大家是不是已经学会了呢?非常简单。如果还有什么不懂的,欢迎联系小白我。

不过大家一定不要频繁去下载,据说会给服务器带来压力,会封帐号,以后就不能查看了。

最后提醒大家,一点要以学习为重,小白我下载到的所有图片已删除,希望大家多多学习,多做有意义的事情,谢谢大家。

获取完整源码,欢迎关注 80后老吴

想要获取精美图片壁纸也可以找小白我,谢谢观看。

本文地址:https://blog.csdn.net/wy_51131/article/details/110211099