Python爬虫下载暴漫表情

Python在爬虫上功能非常强大,近日发现聊天表情有些匮乏,就想用Python下载暴漫表情包。

有了暴漫表情包,再也不用担心聊天无话可说了。嘿嘿嘿

图片5

首先找到要下载的地址是百度贴吧的暴走表情,链接地址为:

http://tieba.baidu.com/p/3175280444

选择只看楼主,链接变为:

http://tieba.baidu.com/p/3175280444?see_lz=1

就是在原有的URL链接后加入了see_lz=1,需要把所有的楼主发送的图片都抓取下来就要分析有多少链接,共有多少页,网页中给了我们答案。

图片1

另外重要的一点是点击上图中的页码来接后发现URL链接发生变化,最重要的一点是第一页变为:

http://tieba.baidu.com/p/3175280444?see_lz=1&pn=1

相应的每一页至少修改pn的值,所以在初始化url的值时可以直接使用这个url值,方便了很多。

查看源代码,运气很好,查找关键字 “共” 有两条,且都是相同的格式,这样提取时就方便多了。

图片2

然后审查图片元素,发现图片是.jpg格式,并且紧跟着是

pic_ext=”jpeg”

不同地方只是链接和图片宽高度,这样就很好构造正则表达式了。

图片3

具体代码如下:

import os
import re
import urllib
import urllib2

#获取网页代码
def gethtml(url):
    request = urllib2.Request(url)
    response = urllib2.urlopen(request)
    html = response.read()
    return html

#获取网页总页数
def getpages(url):
    html = gethtml(url)
    reg = r'共<span class="red">(\d)</span>'
    pages = re.compile(reg)
    pagelist = pages.findall(html)
    for i in pagelist:
        return i

#获取链接的URL地址,通过控制pn参数的值
def geturl(page):
    url = 'http://tieba.baidu.com/p/3175280444?see_lz=1&pn='+str(page)
    return url

#保存图片到本地文件夹
def saveimg(html):
    global num
    reg = r'src="(.+?\.jpg)" pic_ext'
    img = re.compile(reg)
    imglist = img.findall(html)

    for imgurl in imglist:
        urllib.urlretrieve(imgurl, '%s.jpg' % num)
        print u'downloading...第'+str(num)+u'张图片'
        num += 1

#运行主程序
if __name__ == '__main__':
    #在本地新建一个f:/baoman/文件夹,用于保存下载的图片
    path = r'f:/baoman/'
    if not os.path.exists(path):
        os.mkdir(path)
    os.chdir(path)
    num = 1
    url = geturl(num)
    pages = getpages(url)
    for i in range(int(pages)):
        url = geturl(i+1)
        html = gethtml(url)
        saveimg(html)
    print u'下载结束,总共下载'+str(num-1)+u'张图片'

运行程序返回正常

图片6

本地文件夹下出现的149张新暴漫图片

图片7

哈哈,have fun!

您可能还喜欢...