文档章节

老规矩,python hello world, 抓妹子图

扣的man
 扣的man
发布于 2015/06/05 15:32
字数 569
阅读 27
收藏 0
#!/usr/bin/env python
#coding=utf-8
import urllib
import urllib.request
import urllib.parse
import re 
 
'''抓取www.meizitu.com的图片'''
#http://www.meizitu.com/a/list_1_1.html
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




#获取html内容
def getHtml(url):
    file = urllib.request.urlopen(url)
    html = file.read()
    return html.decode("gbk")

def getImageListPage(htmlurl):
    #reg = r'<a href="(.+?)"'
    reg = r"http://www.meizitu.com/a/(\d.+).html"
    imgrepage = re.compile(reg)
    imglistpage = re.findall(imgrepage,htmlurl)
    return imglistpage

#匹配图片地址返回列表数组
def getImg(html):
    #reg = r'data-original="(.+?\.jpg)"'
    imgre = re.compile(reg)
    imglist = re.findall(imgre,html)
    return imglist

#下载图片
def download(imgList,page):
    x = (page-1)*10
    for imgurl in imgList:
        print("download file "+str(x)+" start")
        urllib.request.urlretrieve(imgurl, "E:/python_code/meizitu/%s.jpg" %x)
        print("download file "+str(x)+" end")
        x+=1
 
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

# 获取图片数量,最好是10的倍数
def getPicNum(page,limit):
    pageNumber = page+limit
    while(page<=pageNumber):
        url = "http://www.meizitu.com/a/list_1_"+str(page)+".html"
        print("------------------------url:",url)
        html=''
        html = getHtml(url)
        #print(html)
        print('get %s html success' % page)
        imagelistpage=[]
        imagelistpage=getImageListPage(html)
        imagelistpage = list(set(imagelistpage))
        print(imagelistpage)
        for imagepageurl in imagelistpage:
            imagepageurl="http://www.meizitu.com/a/"+str(imagepageurl)+".html"
            print("download file :",imagepageurl)
            content=[]
            parser=[]
            imagelistpageHTML=getHtml(imagepageurl)
            content=continsrc(imagelistpageHTML)
            parser = MyHTMLParser()
            parser.feed(content)
            parser.close()
            alinks=[]
            alinks = parser.links
            for i in range(len(alinks)):
                try:
                  print("filename:",alinks[i][0],"fileurl:",alinks[i][1])
                  urllib.request.urlretrieve(alinks[i][1],"E:/python_code/meizitu/"+str(alinks[i][0])+".jpg")
                  print("ok!!")
                except:
                  continue
            
        print('imagelistpage:',imagelistpage)
        page=page+1
 
#从第一页开始获取20张图片,可以自行定义从多少页开始进行获取
getPicNum(page=2,limit=100)
input("press enter")


© 著作权归作者所有

共有 人打赏支持
扣的man
粉丝 0
博文 1
码字总数 569
作品 0
深圳
私信 提问
不要再写抓妹子图的代码了!!!!!!!!!!!!!!!!!!

没事就看到抓妹子代码排在热门代码里,一点技术含量没有。 Java抓完php抓,php抓完C#抓,C#抓完AAuto抓,AAuto抓完Python抓。 oschina已经囊括了各种语言、各种版本、各种层次的抓妹子代码。 你妹...

废柴大叔
2014/11/06
1K
15
利用Boost::Python实现C++调用python接口

Boost.Python能将C++的结构体暴露给Python使用。但是在运用Boost.Python时,却遇到一个难题, 1、在C++定义一个新的结构体struct A 2、将此结构体暴露给Python解释器 3、如今在工程中生成结构...

Start-up
2012/11/09
0
0
Windows系统下安装Python

1 首先就是下载python安装包了,地址是(https://www.python.org/) 当前最新的版本是3.7.0下载速度慢的话可以留言私信我发给你。 2 安装过程中注意勾选" Add Python to Path "...

波波课堂
2018/08/27
0
0
python爬头条妹子,为了不被查水表,就不好 多介绍了

先来几张漂亮小姐姐照片 首先需要安装的Python库: requests urllib 直接pip安装就好了 接着我们在网页上打开今日头条,在搜索栏搜索“街拍”(视频教程) 因为这里面的小姐姐多,漂亮 之后,...

Python新世界
2018/07/27
0
0
python的一种语法在window命令行中不能使用,求解,在线等

下面是命令行中的执行过程: C:\Users\Administrator>python Python 3.2.2 (default, Sep 4 2011, 09:51:08) [MSC v.1500 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or......

LeoXu
2012/07/11
1K
12

没有更多内容

加载失败,请刷新页面

加载更多

安卓constraintLayout中app:srcCompat设置的图片显示不出来

使用 app:srcCompat 的时候 引入的图片显示不出来的解决方案 首先查看的你的Activity 继承的是那个Activity 如果是继承AppcompatActivity 使用 ImageView的 app:srcCompat 是没有问题的 如果...

雨焰
53分钟前
1
0
MySQL mysqldump数据导出详解

MySQL mysqldump数据导出详解 2016-04-07 11:14 by pursuer.chen, 114348 阅读, 0 评论, 收藏, 编辑 介绍 在日常维护工作当中经常会需要对数据进行导出操作,而mysqldump是导出数据过程中使用...

linjin200
53分钟前
1
0
Lucene 检索时的步骤

用户输入查询语句:lucene AND learned NOT hadoop 搜索主要分为以下几步 第一步、对查询语句进行词法分析,语法分析,及语言处理 词法分析主要用来识别单词和关键字 语法分析主要是根据查询...

kdy1994
53分钟前
2
0
Gradle Implementation vs API configuration

注: 可以把 Implementation理解为java类的private, 使用Implementation则外部依赖本库的代码引用不到本库Implementation的代码, 也就是降低依赖树的层级, 这样就可以避免外部代码编译时候, 导...

SuShine
57分钟前
2
0
pdf安卓手机适配以及ie的兼容 以及隐藏掉下载打印按钮的方式

这是我目前遇到pdf方面最多的问题。 在百度上搜了很多答案,结果都是建议使用插件。而目前百度能搜的插件基本上都是有缺陷的。自己测试了很多插件。最后使用了pdf.js这个插件。这个插件目前完...

流年那么伤
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部