• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Python爬虫教你获取4K超清壁纸图片,手把手教你跟我一起爬!

python 搞java代码 3年前 (2022-05-21) 36次浏览 已收录 0个评论

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

以下文章来源于腾讯云 作者:Python进阶者

( 想要学习Python?Python学习交流群:1039649593,满足你的需求,资料都已经上传群文件流,可以自行下载!还有海量最新2020python学习资料。 )

/1 前言/

想要电脑换个壁纸时都特别苦恼,因为百度搜到那些壁纸也就是分辨率达到了壁纸的水准。可是里面图片的质量嘛,实在是不忍直视…。而有些4K高清的壁纸大多是有版权的 ,这就使我们想要获取高清的图片,变得非常的困难。

wallhaven 网站是无版权的4K壁纸 ,而且主题丰富(创意、摄影、人物、动漫、绘画、视觉),今天教大家如何去批量的去下载wallhaven4K原图。

/2 项目目标/

获取对应的4K壁纸,并批量下载保存在文件夹。

/3 涉及的库和网站/

软件:PyCharm

需要用到的库:requests、lxml、fake_useragent、time

先列出网址,如下所示:

https://wallhaven.cc/search?q=id%3A65348&page={}

www#gaodaima.com来源gaodai$ma#com搞$$代**码)网搞代码

 

网址city=%E5%B9%BF%E5%B7%9E指的是广州这个城市、pn指的是页数。

/4 项目分析/

滑动鼠标观察下一页的网址的变化:

https://wallhaven.cc/search?q=id%3A65348&page=1<span>
https:</span>//wallhaven.cc/search?q=id%3A65348&page=2<span>
https:</span>//wallhaven.cc/search?q=id%3A65348&page=3

 

<code>滑动下一页时,每增加一页page自增加1,用{}代替变换的变量,再用for循环遍历这网址,实现多个网址请求。
</code>

/5 具体实现/

1、定义一个class类继承object,定义init方法继承self,主函数main继承self。导入需要的库和网址。

<span>import</span><span> requests
</span><span>from</span> lxml <span>import</span><span> etree
</span><span>from</span> fake_useragent <span>import</span><span> UserAgent
</span><span>import</span><span> time

</span><span>class</span><span>  wallhaven(object):
    </span><span>def</span> <span>__init__</span><span>(self):
      self.url </span>= <span>"</span><span>https://wallhaven.cc/search?q=id%3A65348&page={}</span><span>"</span>

    <span>def</span><span> main(self):
        </span><span>pass</span>

<span>if</span> <span>__name__</span> == <span>"</span><span>__main__</span><span>"</span><span>:
    imageSpider </span>=<span>  wallhaven()
    imageSpider.main()</span>

 

2、fake_useragent模块实现随机产生UserAgent。

 ua = UserAgent(verify_ssl=<span>False)
        </span><span>for</span> i <span>in</span> range(1, 50<span>):
            self.headers </span>=<span> {
                </span><span>"</span><span>User-Agent</span><span>"</span><span>: ua.random,
            }</span>

 

3、for循环实现多网址访问。

startPage = int(input(<span>"</span><span>起始页:</span><span>"</span><span>))
endPage </span>= int(input(<span>"</span><span>终止页:</span><span>"</span><span>))
</span><span>for</span> page <span>in</span> range(startPage, endPage + 1<span>):
    url </span>= self.url.format(page)

 

4、发送请求 获取响应。

<span>"""</span><span>发送请求  获取响应</span><span>"""</span>
    <span>def</span><span> get_page(self, url):
        res </span>= requests.get(url=url, headers=<span>self.headers)
        html </span>= res.content.decode(<span>"</span><span>utf-8</span><span>"</span><span>)
        </span><span>return</span> html

 

5、解析一级页面,得到二级页面的 href 地址。

<span>def</span><span> parse_page(self, html):
    parse_html </span>=<span> etree.HTML(html)
    image_src_list </span>= parse_html.xpath(<span>"</span><span>//figure//a/@href</span><span>"</span>)

 

6、遍历二级页面网址,发生请求、解析数据。找到相对于的图片地址。

html1 = self.get_page(i)  <span>#</span><span> 二级页面发生请求</span>
parse_html1 =<span> etree.HTML(html1)
</span><span>#</span><span> print(parse_html1)</span>
filename = parse_html1.xpath(<span>"</span><span>//div[@class="scrollbox"]//img/@src</span><span>"</span><span>)
</span><span>#</span><span> print(filename)</span>

 

7、获取到的图片地址,发生请求,保存。

<span>#</span><span> 图片地址发生请求</span>
<span>for</span> img <span>in</span><span> filename:
    dirname </span>= <span>"</span><span>./图/</span><span>"</span> + img[32:] <span>"""</span><span>可修改图片保存的地址</span><span>"""</span>
    <span>print</span><span>(dirname)
    html2 </span>= requests.get(url=img, headers=<span>self.headers).content

    with open(dirname, </span><span>"</span><span>wb</span><span>"</span><span>) as f:
        f.write(html2)
        </span><span>print</span>(<span>"</span><span>%s下载成功</span><span>"</span> % filename)

 

8、调用方法,实现功能。

html =<span> self.get_page(url)
self.parse_page(html)
优化:设置延时。(防止ip被封)。

time.sleep(</span>1.4) <span>"""</span><span>时间延时</span><span>"""</span>

 

/6 效果展示/

1、点击绿色按钮运行,将结果显示在控制台,如下图所示。输起始页和终止页,回车。
2、图片下载成功控制台输出。
3、批量保存。
4、验证4K。(点击图片打开属性)

/7 小结/

1、不建议抓取太多数据,容易对服务器造成负载,浅尝辄止即可。
2、本文基于Python网络爬虫,利用爬虫库,获取wallhaven4K壁纸。
3、4K的壁纸下载时可能会有点缓慢,请大家耐心的等待。如果图片的地址不一样,需要自己修改一下图片的保存的地址。
4、大家也可以在wallhaven网址上,寻找自己喜欢图片,按照操作步骤,自己尝试去做。自己实现的时候,总会有各种各样的问题,切勿眼高手低,勤动手,才可以理解的更加深刻。
5、如果本文源码的小伙伴,请在后台回复“4K壁纸”四个字进行获取,觉得不错,记得给个Star噢~

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Python爬虫教你获取4K超清壁纸图片,手把手教你跟我一起爬!

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址