欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

女神说你low聊天都没有表情包,小伙用Python下载了全网表情包

程序员文章站 2022-04-20 10:35:11
现在和妹子聊天,没有表情包也会被嫌弃了么? 那为了能和妹子更愉快的聊天,咱们爬他个天昏地暗的表情包 准备 环境:Windows + Python3.6 模块: Python爬虫常规三步俗称:“爬虫三板斧” 第一斧:抓取目标网页 第二斧:解析网页获取数据 第三斧:批量下载 使用request.urlr ......

现在和妹子聊天,没有表情包也会被嫌弃了么?

女神说你low聊天都没有表情包,小伙用Python下载了全网表情包

那为了能和妹子更愉快的聊天,咱们爬他个天昏地暗的表情包

准备

环境:Windows + Python3.6

模块:

1 import requests # 请求网页
2 
3 from lxml import etree # 解析网页
4 
5 from urllib import request # 下载内容
6 
7 import os # 系统包

Python爬虫常规三步俗称:“爬虫三板斧”

第一斧:抓取目标网页

  1. 简单的反爬虫机制
  2. 获取服务器响应,获取请求响应的状态码
  3. 从响应里提取出网页,获取整个网页
  4. 将抓取的网页作为参数返回
 1 def parse_page(url):
 2     # 2.1简单的反爬虫机制
 3     HEADERS = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36'}
 4     # 2.2获取服务器响应
 5         # 获取请求响应的状态码
 6     response = requests.get(url, headers=HEADERS)
 7     # 2.3 从响应里提取出网页
 8         # 获取整个网页
 9     text = response.text
10         # 将抓取的网页作为参数返回
11     return text

第二斧:解析网页获取数据

  1. 将网页保存在HTML对象里
  2. 从网页对象根据一定的规则提取数据
  3. 根据URL的规则对URL进行循环,获取多页URL,并传给parse_page()进行抓取数据
  4. 对列表里的img对象进行提取
  5. try.... except 对程序进行异常处理,避免因为其他原因报错
  6. 获取所有表情的URL并保存在列表里
  7. 从列表里提取出表情的URL,至于为啥不取零,列表中有空值,取零报错
  8. 对表情的URL进行处理,提取出表情图片的格式,用于组成表情的名字
  9. 获取表情的名字
  10. alt = re.sub(r'[,。??,/\·]','',alt) #利用正则表达式对表情名字中存在的特殊字符进行处理
  11. 用 alt+suffix组成表情的新名字
 1 def main():
 2     # 根据URL的规则对URL进行循环,获取多页URL,并传给parse_page()进行抓取数据
 3     #Python学习交流群:125240963,群内每天分享干货,欢迎各位小伙伴入群学习交流
 4     for x in range(1, 11):
 5         url = "http://www.doutula.com/photo/list/?page=%d" % x
 6         # 调用parse_page()函数并把url给进去
 7         text=parse_page(url)
 8         # 接收parse_page()返回的网页,并传给page_list()函数进行解析
 9         imgs = page_list(text)
10         # 3.3 对列表里的img对象进行提取
11         for img in imgs:
12             # try.... except    对程序进行异常处理,避免因为其他原因报错
13             try:
14                 # 3.4获取所有表情的URL并保存在列表里
15                 imgurl = img.xpath(".//@data-original")
16                 # 3.5从列表里提取出表情的URL,至于为啥不取零,列表中有空值,取零报错
17                 for img_url in imgurl:
18                     # print(img_url)
19                     # 分割后缀名:.jpg .png
20                     # 3.6对表情的URL进行处理,提取出表情图片的格式,用于组成表情的名字
21                     suffix = os.path.splitext(img_url)[1]
22                     suffix = suffix.split("!")[0]
23 
24                     # 3.7获取表情的名字
25                     alt = img.xpath(".//@alt")[0]
26                     # alt = re.sub(r'[,。??,/\\·]','',alt)  #利用正则表达式对表情名字中存在的特殊字符进行处理
27                     # 3.8用 alt+suffix组成表情的新名字
28                     img_name = alt + suffix

第三斧:批量下载

使用request.urlretrieve()对表情进行下载并保存在images文件里

 1                     # 使用request.urlretrieve()对表情进行下载并保存在images文件里
 2                     #Python学习交流群:125240963,群内每天分享干货,欢迎各位小伙伴入群学习交流
 3                     request.urlretrieve(img_url, 'images/' + img_name)
 4                     # 打印出那些表情已经下载
 5                     print(img_name + '下载完毕!')
 6 
 7             except:
 8                 print("表情报错")
 9 
10     # 执行函数
11 if __name__ == '__main__':
12     main()

女神说你low聊天都没有表情包,小伙用Python下载了全网表情包

女神说你low聊天都没有表情包,小伙用Python下载了全网表情包

 

 所以Python爬虫的“三板斧”你了解了吗,是不是感觉到“三板斧”的强大!哈哈哈

女神说你low聊天都没有表情包,小伙用Python下载了全网表情包

女神说你low聊天都没有表情包,小伙用Python下载了全网表情包