加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python3下载妹子图,你懂的。

发布时间:2020-12-17 17:09:10 所属栏目:Python 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 #author:[email?protected]#date:2014-12-08#coding:utf-8import osimport sysimport reimport urllib.requestimport urllib.parsefrom html.parser i

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

#author:[email?protected]
#date:2014-12-08

#coding:utf-8

import os
import sys
import re
import urllib.request
import urllib.parse
from html.parser import HTMLParser

class MyHTMLParser(HTMLParser):
    '''
    网页解析生成一个HTMLParser的类,然后利用这个类,
    把给定的一个网址中所需要的地址解析并保存在该类中,
    然后利用该类的的地址,下载图片。
    '''
    def __init__(self):
        HTMLParser.__init__(self)
        self.links = []
        pass
    def handle_starttag(self,tag,attrs):
        #print("Encountered a start tag:",tag)
        if tag == "img":
            s = []
            for (variable,value) in attrs:
                s.append(value)
            #print("ss:",s)
            self.links.append(s)
            s = []
        pass
    
    def handle_endtag(self,tag):
        #print("Encountered a end tag:",tag)
        pass    
    def handle_data(self,data):
        #print("Encountered some data:",data)
        pass



def geturl(url):
    '''
    打开给定的网页,并返回网页的内容,python3中来来是以字节码形式返回的,
    可以根据网页编码判定编码为gb2312,是gbk的子集,
    以字符串形式返回。
    '''
    req = urllib.request.urlopen(url)
    req = req.read()
    return req.decode("gbk")


def continsrc(src):
    '''
    根据网页的内容,找到我们所需要的内容,
    这里主要是有两个需要关注的内容,一个是picture标签,另一个是boxinfo标签。
    '''
    inta = src.find("<div id="picture">")
    #print(inta) 所找的第一个位置点
    intb = src.find("<div class="boxinfo">")
    #print(intb) 所找的第二个位置点
    content = src[inta:intb]
    return content


def pageinurl(url):
    '''
    这个是把上面的许多功能放在一个函数库里,方便操作。
    作用是给定一个url,自动去解析地址,并自动下载保存图片。
    '''
    src = geturl(url)
    content = continsrc(src)
    parser = MyHTMLParser()
    parser.feed(content)
    parser.close()
    alinks = parser.links
    for i in range(len(alinks)):
        print("filename:",alinks[i][0],"fileurl:",alinks[i][1])
        urllib.request.urlretrieve(alinks[i][1],alinks[i][0]+".jpg")
    print("ok!!")


if __name__ == "__main__":
    print("------------------------")
    #url = "http://www.meizitu.com/a/4647.html"
    url = "http://www.meizitu.com/a/4674.html"
    src = geturl(url)
    
    content = continsrc(src)
    print(content)

    parser = MyHTMLParser()
    parser.feed(content)
    parser.close()

    print("------------------------------------------")
    print(parser.links)

    a = parser.links
    b = len(a)
    print(len(a))

    for i in range(b):
        print("filename:",a[i][0],a[i][1])
        urllib.request.urlretrieve(a[i][1],a[i][0]+".jpg")


    print("==================================")
    pageinurl("http://www.meizitu.com/a/4647.html")

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读