• 妹子天天要换新头像?没问题,通过爬虫爬取精美头像


    需求分析

    昨天和妹子聊天,她说她现在很苦恼,“仙草哥哥,我最近没有头像可以用了。”

    我感到了非常不可思议,我说,“你不是天天都换头像吗?怎么会没有头像用了呢?”

    她说,“仙草哥哥你是笨蛋吗?就是因为天天都要换新头像,好看的头像都用光了,所以才没有头像可以用了啊!”

    我说,“那也不要紧啊,你把去年的历史头像每个再用一天,不就又可以够用一年了吗?”

    妹子非常不开心,“哼,和你这种直男没什么可聊的。”,然后她就不理我了

    怎么办,为了能让妹子开心起来,就做一个能够爬取头像的爬虫程序吧!

    实现分析

    虽然我之前在文章中还从没写过图片的爬取,但是实际上图片的爬取也很简单,和普通的爬虫程序没有很大的区别

    最大的不同在于,一般在爬取一个页面的时候,都是通过r.text直接获取到解码后的文本内容。但是如果你要保存一个图片,就不需要对其解码了,只要把二进制的响应内容,原封不动的保存下来就可以了,使用r.content就可以满足了

    其他的和普通的爬虫程序一样,也还是先发起请求,提取出图片地址,然后对图片发起请求,保存二进制的响应内容

    不过这次在爬取的时候,也遇到了一点小的困难。直接使用r.text的解码是错误的,也就是说,我们的requests错误的判断了编码,这种时候怎么办呢?不要着急,我们可以先去查看一下浏览器是使用什么编码去解析的,如图所示

    可以看到,上边写的编码为,charset=gb2312,这个大概就是实际的编码了,我们可以尝试一下

    1. r = requests.get(url)
    2. r.encoding = "gb2312"
    3. print(r.text)

    如此操作以后,文字的显示就正常了,说明网站的编码确实是gb2312,这样的一个问题就得到了解决,然后就可以正常提取出图片地址,然后请求保存了

    1. img_url = "xxx"
    2. r = requests.get(img_url)
    3. with open("图片.png", "wb") as f:
    4. f.write(r.content)

    完整代码展示

    1. import requests
    2. import time
    3. from base64 import b64decode
    4. from lxml import etree
    5. headers = {"user-agent": "Mozilla/5.0"}
    6. url = b64decode("aHR0cDovL3d3dy5pbWVpdG91LmNvbS9kb25nbWFuLw==").decode()
    7. r = requests.get(url, headers=headers)
    8. r.encoding = "gb2312"
    9. html = etree.HTML(r.text)
    10. urls = html.xpath("//ul[@class='g-gxlist-imgbox']//a/@href")
    11. titles = html.xpath("//ul[@class='g-gxlist-imgbox']//a/@title")
    12. for i in range(len(urls)):
    13. title = titles[i][0:6] + "头像"
    14. url = urls[i]
    15. r = requests.get(url, headers=headers)
    16. r.encoding = "gb2312"
    17. html = etree.HTML(r.text)
    18. img = html.xpath("//div[@class='img-list3']//img/@src")
    19. num = 1
    20. for u in img:
    21. r = requests.get(u, headers=headers)
    22. with open(title + str(num) + ".png", "wb") as f:
    23. f.write(r.content)
    24. print(title + "-" + str(num) + "已完成")
    25. num += 1
    26. time.sleep(1)
    27. time.sleep(1)

    程序运行过程展示

    程序运行结果展示

     

    可以看到,在我们的程序运行结束以后,有很多的好看头像就都已经被保存下来了


    虽然爬取头像的程序是给妹子做的,但是我自己看完以后也很心动,我也是挑选了一个我喜欢的新头像换上了,怎么样,好看吗?

    现在我把程序分享给你,你也可以通过运行该程序来挑选你自己心仪的头像哦。喜欢请收藏加关注,每天带你用新的爬虫程序

  • 相关阅读:
    Java dom4j操作xml文件的方法大全
    互融云工业品电商系统开发整体解决方案 助力行业数字信息化发展
    【力扣周赛】第 364 场周赛⭐(前后缀分解+单调栈&DFS技巧)
    7.(vue3.x+vite)组件间通信方式之vuex
    【华为OD机试python】评论转换输出【2023 B卷|100分】
    go-zero 微服务实战系列(二、服务拆分)
    NNDL实验 优化算法3D轨迹 鱼书例题3D版
    Vue 源码解读(8)—— 编译器 之 解析(上)
    【halcon特征点专题系列】01/4--Harris角点检测
    数据结构与算法——排序算法
  • 原文地址:https://blog.csdn.net/sagegrass/article/details/125606397