文档章节

老规矩,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
深度学习|费解的tensorflow

学过Python的小伙伴都会觉得,python的语法简单,逻辑清晰。虽然tensorflow是python的一个库(并不是标准库),但是使用并不简单,你可能会被tensorflow的奇怪语法设计困惑,所以本文章叫做费...

罗罗攀
02/11
0
0
利用Boost::Python实现C++调用python接口

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

Start-up
2012/11/09
1K
0
python爬头条妹子,为了不被查水表,就不好 多介绍了

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

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

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

波波课堂
2018/08/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

rime设置为默认简体

转载 https://github.com/ModerRAS/ModerRAS.github.io/blob/master/_posts/2018-11-07-rime%E8%AE%BE%E7%BD%AE%E4%B8%BA%E9%BB%98%E8%AE%A4%E7%AE%80%E4%BD%93.md 写在开始 我的Arch Linux上......

zhenruyan
今天
5
0
简述TCP的流量控制与拥塞控制

1. TCP流量控制 流量控制就是让发送方的发送速率不要太快,要让接收方来的及接收。 原理是通过确认报文中窗口字段来控制发送方的发送速率,发送方的发送窗口大小不能超过接收方给出窗口大小。...

鏡花水月
今天
10
0
OSChina 周日乱弹 —— 别问,问就是没空

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @tom_tdhzz :#今日歌曲推荐# 分享容祖儿/彭羚的单曲《心淡》: 《心淡》- 容祖儿/彭羚 手机党少年们想听歌,请使劲儿戳(这里) @wqp0010 :周...

小小编辑
今天
1K
11
golang微服务框架go-micro 入门笔记2.1 micro工具之micro api

micro api micro 功能非常强大,本文将详细阐述micro api 命令行的功能 重要的事情说3次 本文全部代码https://idea.techidea8.com/open/idea.shtml?id=6 本文全部代码https://idea.techidea8....

非正式解决方案
今天
5
0
Spring Context 你真的懂了吗

今天介绍一下大家常见的一个单词 context 应该怎么去理解,正确的理解它有助于我们学习 spring 以及计算机系统中的其他知识。 1. context 是什么 我们经常在编程中见到 context 这个单词,当...

Java知其所以然
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部