• 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')
  • 相关阅读:
    打印对象的 “精心骗局”
    js继承(自备水,这非常干货)
    递归实现深拷贝( 只要学过js递归,看不懂找我包会 )
    PuTTY SSH 使用证书免密码登录
    git 使用
    php socket通信的简单实现
    基于PHP实现短信验证码接口的方法
    PHP实现页面静态化的简单方法分享
    Yii2使用数据库操作汇总(增删查改、事务)
    PHP 获取当前页面的URL信息
  • 原文地址:https://www.cnblogs.com/hhwblogs/p/12702969.html
Copyright © 2020-2023  润新知