文章目录

  • 前言
  • 寻找目标
  • 思路分析
  • 步骤实现
  • 爬取过程
  • 实现效果
  • 以下是全部代码


提示:以下是本篇文章正文内容,下面案例可供参考

前言

大家点进来看selenium操作,那么你应该知道 selenium 是什么了这里不再过多的介绍,selenium它能做到自动操作,下面演示selenium自动化实现对网页的内容爬取进行保存和下载。

寻找目标

我先找到了一个专门发布表情包的网站,就叫做发表情网,可以通过搜索关键词得到大量相关的表情包,下面对这个网站的爬取进行介绍。这里我是进行热门表情包的抓取

这个网站是属于静态加载的网站。我们不需要通过寻找数据接口去爬取,直接使用普通的爬虫代码进行爬取就可以了,或者使用selenium进行操作都可以。我们的操作对象找到了接下来就是开始干活。

思路分析

selenium创建浏览器对象,总之爬取的第一步都是先对网页发起请求,请求成功后在网页里确定我们的操作步骤要干嘛(点击哪里或者要输查找什么东西等。。。)通过selenium提供的找元素的方法进行合适自己的使用,然后提取自己所需要的信息,我这里仅进行(图片,标题,详情页)的提取,如需要其他可自行添加,最后就是保存至Excel和下载图片。

步骤实现

首先我们要拿到浏览器的对象,接着开始访问网页找到热门表情包,并点击进入,在网页上通过xpath找到标签位置。

进到所需的热门表情包之后我们右键检查看看这些一个个表情包都储存在哪里,检查发现我们要的东西都在属性class="ui segment imghover"里面。

接下来我们用selenium提供的xpath方法找到所有的div,再进行循环所有的div就可以获取我们所需的数据。title那里进行了一下处理,防止有些表情包名字过长导致后面下载图片的时候报错。

这样子我们所需的数据就爬取下来了,但只是得到第一页的内容,我们想要更多的表情包就得设置个翻页。那么我们怎么操作selenium帮我们进行自动翻页呢?

我在网页滑下来看了一下,右键检查了下一页,发现第二页表情包的链接href储存在a标签中,那么我们就可以通过selenium定位到下一页的标签,找到标签后我们就进行一个判断,如果我们的这个下一页的标签能获取到href的这个属性那就点击进行翻页。

这里还要解决一下爬完表情包之后,防止翻页这里获得href后一直点击后面的下一页链接,要加个while给个判断条件,设置想要点击多少次下一页进行爬取,接下来我们就可以构造字典和列表进行数据的存储,调用其他函数进行相关的操作。

对数据进行保存至Excel的操作

对数据图片进行下载保存操作

爬取过程

到这我们的热门表情包就爬取下来,拥有这么多表情包是不是很爽,以后再也不怕不够别人斗图了。

实现效果

以下是全部代码

# @Author : 王同学
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait   # 显示等待
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver import ActionChains     # 动作链
import time
import re
import requests
import os.path
import csvdriver = webdriver.Chrome() # 创建浏览器对象wait = WebDriverWait(driver,10)def get_conten(url):driver.get(url) # 对网页发送请求time.sleep(1)mood = wait.until(EC.presence_of_element_located((By.ID,'pcheaderbq'))) # 找到热门表情包点击mood.click()    # 找到热门表情包点击time.sleep(1)chains = wait.until(EC.presence_of_element_located((By.XPATH,'//*[@id="bqb"]/div[3]/a[8]')))    # 移动到页面末尾,加载元素ActionChains(driver).move_to_element(chains).perform()  # 开始移动time.sleep(3)def get_data():all_data = []   # 定义列表 储存数据n = 1while n < 6:    # 设置循环,翻页次数print(f'================================================正在爬取第{n}页的数据===========================================')time.sleep(2)all = wait.until(EC.presence_of_all_elements_located((By.XPATH,'//*[@id="bqb"]/div[1]/div')))   # 直到元素出现,继续往下执行for i in all:title = i.find_element(By.XPATH,'./a').get_attribute('title')if len(title) >= 295:   # 判断 处理因标题过长而保存不了图片title = 'not'ditail = i.find_element(By.XPATH,'./a').get_attribute('href')   # 获取详细页images = i.find_element(By.XPATH,'./a/img').get_attribute('src')    # 获取图片链接item = {'标题': title,'详情页': ditail,'图片': images}print(item)all_data.append(item)save_Images(images,title)save_csv(all_data)# 翻页time.sleep(2)page = wait.until(EC.presence_of_element_located((By.LINK_TEXT,'下一页')))if page.get_attribute('href'):page.click()n += 1print('======================爬取结束==================================')def save_csv(all_data):# 表头headers = ['标题','详情页','图片']with open('表情包.csv',mode='w',encoding='utf-8',newline='')as f:filt = csv.DictWriter(f,headers)filt.writeheader()filt.writerows(all_data)def save_Images(images,title):if not os.path.exists('./表情包/'):os.mkdir('./表情包/')image_data = requests.get(url=images).contentbig = '[?<>/\|():!"*]'new_title = re.sub(big,"",title)with open('./表情包/' + new_title + '.jpg',mode='wb')as f:f.write(image_data)print('正在保存图片===>:',title)def main():url = '这里加上链接'get_conten(url)get_data()if __name__ == '__main__':main()

Python之selenium爬虫实战爬取表情包相关推荐

  1. python之scrapy实战爬取表情包

    python之scrapy实战爬取表情包 前言:在之前我们学习了scrapy框架的基本使用,今天我们通过实战(爬取http://www.doutula.com的套图)来更加了解scrapy框架额使用, ...

  2. Python新手实战爬取表情包

    Python新手实战爬取表情包 前言 如有错误, 还望大佬们斧正. 谢谢! 我是一个Python小白. 如有错误还请见谅. 本文是Python 爬取表情包 适合新手. 代码还有很多可以改进的地方. 本 ...

  3. python表情包爬虫程序_Python网络爬虫7 - 爬取表情包

    为了逗女朋友开心,想找一堆表情包,那么作为一名程序员,自然是会想到用程序来完成这个事情,而Python爬虫就是一个非常好的方法. 我先找到了一个专门发布表情包的网站,就叫做 分析站点 为了不引起不适, ...

  4. Python之Scrapy爬虫实战--爬取妹子图

    1.前言 反正闲着也是闲着,不如来学习啊! 2.关键代码 新建项目 不会的同学可参考我的另一篇博文,这里不再赘述:Python之Scrapy爬虫实战–新建scrapy项目 这里只讲一下几个关键点,完整 ...

  5. python爬虫实战-爬取视频网站下载视频至本地(selenium)

    #python爬虫实战-爬取视频网站下载视频至本地(selenium) import requests from lxml import etree import json from selenium ...

  6. Python爬虫实战爬取租房网站2w+数据-链家上海区域信息(超详细)

    Python爬虫实战爬取租房网站-链家上海区域信息(过程超详细) 内容可能有点啰嗦 大佬们请见谅 后面会贴代码 带火们有需求的话就用吧 正好这几天做的实验报告就直接拿过来了,我想后面应该会有人用的到吧 ...

  7. python爬虫实战---爬取大众点评评论

    python爬虫实战-爬取大众点评评论(加密字体) 1.首先打开一个店铺找到评论 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手. 很多 ...

  8. python爬虫实战-爬取微信公众号所有历史文章 - (00) 概述

    http://efonfighting.imwork.net 欢迎关注微信公众号"一番码客"获取免费下载服务与源码,并及时接收最新文章推送. 最近几年随着人工智能和大数据的兴起,p ...

  9. Python爬虫爬取表情包+Autojs微信自动导入表情包脚本(附源码)

    废话不多说直接开始 Python爬取表情包 一.检查网页源码 发现可以找到图片地址,直接请求图片地址下载图片 二.打开开发者工具(F12) 通过xpath提取p标签下的img标签src属性为图片地址 ...

最新文章

  1. Zookeeper 的典型应用场景场景
  2. Ch -- 一个 C/C++ 解释器
  3. php curl p12证书处理,PHP如何支持CURL字符串证书传输(详细解决过程)
  4. android签名的应用-- 禁止未经授权签名的apk安装
  5. Django —— 模型层 —— QuerySet —— QuerySet方法参考
  6. 【Linux】一步一步学Linux——traceroute命令(167)
  7. Optional 的基本用法
  8. js判断时间是早上还是下午_牛奶早上喝好,还是晚上喝好?没想到“最佳时间”是这个点,颠覆了!...
  9. 如何在Mac上将 Spotify 音乐转换为 MP3 格式?
  10. ubuntu mysql双主热备配置_MySql双主热备配置
  11. java kotlin相互调用_Kotlin的互操作——Kotlin与Java互相调用
  12. Python中的字符串(搜索和替换、对齐、统计、分离和连接)
  13. Java程序猿必须掌握的重点之一:Lock锁
  14. i7-9700与E5 2667 V2空载功耗对比
  15. 矩阵的特征值与特征向量 求解
  16. 华为鸿蒙系统支持什么手机_华为鸿蒙系统支持的手机型号_鸿蒙系统支持华为哪几款手机...
  17. 到底买苹果XS还是XR_iPhone XS和iPhone XR买哪个好?苹果XR和XS区别对比测评
  18. 4.22 使用裁切命令裁剪图片 [原创Ps教程]
  19. 微信公众平台三方授权登录(Java实现)
  20. selenuim爬虫实战(日lofter.com)

热门文章

  1. 计算机互联网络板书,初中信息技术:计算机互联网络》教学设计
  2. 求职信英语计算机作文,求职信的英语作文(通用5篇)
  3. LTE学习笔记 ——E-RAB
  4. 做IT的考什么证书含金量高?对带项目和招标有作用的?
  5. oracle rac v3500_Oracle RAC 基本概念及入门
  6. 单片机波特率不加倍c语言,51单片机硬件系统设计时,为什么用11.0592MHz的晶振而不用12MHz晶振的原因及串口波特率误...
  7. 哔哩哔哩视频下载(python3+asyncio+断点续传+有注释)
  8. 推荐Dropbox网盘
  9. zrender使用问题
  10. 隐藏video标签中各种控件