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】收集整理供大家参考研究 如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
