文档章节

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

扣的man
 扣的man
发布于 2015/06/05 15:32
字数 569
阅读 26
收藏 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
深圳
python爬头条妹子,为了不被查水表,就不好 多介绍了

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

Python新世界
07/27
0
0
Windows系统下安装Python

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

波波课堂
08/27
0
0
利用Boost::Python实现C++调用python接口

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

Start-up
2012/11/09
0
0
[雪峰磁针石博客]flask构建自动化测试平台1-hello

简介 第一部分 Flask实例。学习使用Flask开发,构建功能完备的Web应用程序。我们开发了动态的头条新闻应用程序,可显示最新的新闻标题以及最新的货币和天气信息。在项目二中,我们构建了由M...

Python测试开发人工智能
06/09
0
0
Python基础教程系列:一、Python起步

毕竟不是写论文,也不是照本宣科,尽管写的内容主要还是来自于书本或者网络,但也尽量以自己理解的方式写出来吧,呵呵! 首先软件的安装我就不说了,建议尽量在Linux系统下玩,而且一般Linux...

东方神剑
2015/01/20
0
2

没有更多内容

加载失败,请刷新页面

加载更多

WinDbg

参考来自:http://www.cnit.net.cn/?id=225 SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols ctrl + d to open dump_file Microsoft (R) Windows Debugger Version 6.12.0002.633......

xueyuse0012
42分钟前
2
0
OSChina 周五乱弹 —— 想不想把92年的萝莉退货

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @罗马的王:分享松澤由美的单曲《地球ぎ》 很久没看圣斗士星矢了 《地球ぎ》- 松澤由美 手机党少年们想听歌,请使劲儿戳(这里) @开源中国首...

小小编辑
今天
11
1
springBoot条件配置

本篇介绍下,如何通过springboot的条件配置,控制Bean的创建 介绍下开发环境 JDK版本1.8 springboot版本是1.5.2 开发工具为 intellij idea(2018.2) 开发环境为 15款MacBook Pro 前言 很多时候,...

贺小五
今天
1
0
javascript source map 的使用

之前发现VS.NET会为压缩的js文添加一个与文件名同名的.map文件,一直没有搞懂他是用来做什么的,直接删除掉运行时浏览器又会报错,后来google了一直才真正搞懂了这个小小的map文件背后的巨大...

粒子数反转
昨天
1
0
谈谈如何学Linux和它在如今社会的影响

昨天,还在农耕脑力社会,今天已经人工智能技术、大数据、信息技术的科技社会了,高速开展并迅速浸透到当今科技社会的各个方面,Linux日益成为人们信息时代的到来,更加考验我们对信息的处理程...

linux-tao
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部