Python爬取网站gif表情包

Python 版本为2.7.13   IDE工具Pycharm 爬取网站:腾牛网

腾牛网属于一个比较简单的网站,就是单纯的查看网站源码,再根据网站的基本信息,提取gif表情包的下载地址,然后按各个主体分类保存

以下为效果图

1.首先,打开腾牛网站

http://www.qqtn.com/bq/dtbq_1.html
爬取内容为动态表情列表里面的表情包

2.右键查看网页源码

很明显要爬取的内容在一个
中,直接用geta()函数,利用正则表达式获取,然后再获取每一条url
3.上面获取的网址,每一条都点击去都会有相对应的主题的表情包,然后通过getb()函数获取具体的gif地址和文件夹名称
4.将获取的gif通过savegif()保存在本地目录下
5.通过一个for循环,可以根据本身需求获取特定的网页的表情包,或者直接就获取网站中40个页面的表情包

# -*- coding: utf-8 -*-

__author__ = 'zhao'
__date__ = '2017/11/24 11:03'

import re,time,requests,os,json

class Imagegif(object):
    def __init__(self):
        self.session = requests.Session()
# 运行程序
    def run(self, url):
        # 1.先获取整个页面
        url2 = self.geta(url)
        # 2.逐一获取套图
        for url2 in url2:
            # 进入第二层网页
            url = 'http://www.qqtn.com%s' %(url2)
            url2 = self.getb(url)
            # 保存图片
            self.savegif(url2)
# 下载页面
    def download(self, url):
        try:
            # 获取页面
            response = self.session.get(url)
            # 根据页面信息调整适当的编码
            response.encoding = 'gb2312'
            # 返回页面
            return response
        except Exception as e:
            print e
# 获取整个页面的套图url
    def geta(self,url):
        # 将页面的显示出来
        data1 = self.download(url).text
        if data1:
            # 先筛选出一块区域
            fir = re.findall(r'
.*?
', data1, re.S) # 再筛选出具体网址 fir2 = re.findall(r'/article/.*?html', str(fir)) return fir2 else: print u"获取不到第一层网站" # 获取一组套图的全部gif def getb(self, url): data1 = self.download(url).text if data1: # 获取一块区域,re.S多行获取 fir = re.findall(r'
.+?
', data1, re.S) # 获取标题 name = re.findall(r'

.*?

', data1) # 将标题提取出来 name = str(name).replace('

', '').replace('

', '') # 提取gif网址 fir2 = re.findall(r'up.*?gif', str(fir)) # 将标题添加到列表中 fir2.append(name) return fir2 else: print u'获取不到第二层网站' # 保存gif表情包 # 保存图片 def savegif(self, url2): dir_name = url2[-1] url2.remove(dir_name) # 将字符串中的[u'']转为unicode dir_name = str(dir_name).replace('[u','').replace('\'','').replace(']','') # unicode反转码为中文 s = r'%s' % (dir_name) dir_name = s.decode('unicode_escape') print dir_name if not os.path.exists(dir_name): os.makedirs(dir_name) il = 0 for url3 in url2: il = il + 1 url = 'http://www.qqtn.com/%s' % (url3) pix = url.split('/')[-1].split('.')[-1] img_name = dir_name + str(il) print img_name img_path = os.path.join(dir_name, "%s.%s" % (img_name, pix)) if not os.path.exists(img_path): response = self.download(url) # 打印图片地址 print(url) if response: # 返回图片二进制内容 img_data = response.content # 存储图片 with open(img_path, 'wb') as f: f.write(img_data) if __name__ == '__main__': spider = Imagegif()
#该网站有40个页面,可根据自身需求爬取
    for i in xrange(1,3):
        url = 'http://www.qqtn.com/bq/dtbq_%s.html' % i # i为爬取的具体页面
        spider.run(url)

你可能感兴趣的:(Python爬取网站gif表情包)