• Python爬取养眼图片


    1.准备

    各位绅士们,你可能会觉得疫情在家无聊,那么现在我们的Python语言可以满足你们的需求。
    项目需要的工具
    (1)Python3
    (2)requests库
    requests库可以通过代码pip install requests安装。如果不会用pip,可以参考以下网址i:https://jingyan.baidu.com/article/466506583fec5af549e5f825.html

    2. 项目内容

    2.1 网页分析

    你打开以下网址:https://www.vmgirls.com/

    推荐用Google浏览器。打开网址之后。

    (1)右键点击检查,然后会出现HTML代码。网页链接再这里的href标签,并且是用.jpeg结尾的。

     相信你也可以找链接。找到之后记住这个标签的格式

    2.2 代码结构

    之前我们已经对网页进行分析,而且锁定了我们想要在网页中提取的信息(图片)所在的位置,那么下一步我们可以用Python写一个简单的代码了。最后我会给出完整代码。
    (1) 代码结构设计
    我们的代码可以实现,链接得到网页源码、解析源码得到图片、保存图片。
    结构如下:

    m = Meizi(url, kv)#建立类
    m.getHtml()
    m.Parase(html)
    m.Saveing(urls)
    print('succ')

    (2)导入库

    import requests
    import re
    import time

    (3)获取网页HTML

     def getHtml(self):
           try:
            response = requests.get(self.url,headers=self.kvs,timeout = 30)
            response.encoding = response.apparent_encoding
            response.raise_for_status
            html = response.text
            self.Parase(html)
           except:
              print("ERROR!")

    (4)解析HTML

    def Parase(self,html):
            urls = re.findall('<a href="(.*?)" alt=".*?" title=".*?">', html)
            print(urls)
            self.Saveing(urls)

    (5)保存为图片文件

       def Saveing(self,urls):       
           for url in urls:
             time.sleep(1)
             file_name = url.split('/')[-1]
             response = requests.get(url,headers=kv)
             with open(file_name,'wb') as f:
                 f.write(response.content)

    3. 结尾(附完整代码)

    这个简单项目已经结束了,你可以快速下载图片了。不过要提醒下,如果爬取太频繁,可能会被封锁ip,到时候你就无法访问这个网站了,所以建议要适当爬取,不能给网站索取太多,这样对双方都好。
    代码如下:

    import requests
    import re
    import time
    class Meizi:
        def __init__(self,urls,kv):
            self.url = urls
            self.kvs = kv
        
        def getHtml(self):
           try:
            response = requests.get(self.url,headers=self.kvs,timeout = 30)
            response.encoding = response.apparent_encoding
            response.raise_for_status
            html = response.text
            self.Parase(html)
           except:
              print("ERROR!")
              
        def Parase(self,html):
            urls = re.findall('<a href="(.*?)" alt=".*?" title=".*?">', html)
            print(urls)
            self.Saveing(urls)
        def Saveing(self,urls):       
           for url in urls:
             time.sleep(1)
             file_name = url.split('/')[-1]
             response = requests.get(url,headers=kv)
             with open(file_name,'wb') as f:
                 f.write(response.content)
    
    url='https://www.vmgirls.com/13333.html'#这里的端口号13333可以调整,调整后就是不同的妹子。
    kv={'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'}
    m = Meizi(url, kv)
    m.getHtml()
    print('succ')
  • 相关阅读:
    低调 、隐忍、善良应是最应该修炼的
    达内C++培训课程
    这三天低效率开发的总结,我都做了些什么啊?
    linux sysfs(1)
    编码问题
    Linux中的system函数的实现和解释
    北京邮电大学 程序设计课程设计 电梯 文件输入版本(已调试,大致正确运行==)
    "Dallas" CTP3 发布通告
    结合使用PowerPivot 和 "Dallas" CTP3
    Windows Azure 解决方案系列: 能源监测减少支出,通过托管平台拓展业务
  • 原文地址:https://www.cnblogs.com/hhwblogs/p/12702969.html
Copyright © 2020-2023  润新知