表情包(图片)自生产——Python爬虫xpath实现
文章目录
- 严正声明:爬虫应严格遵守国家的相关法律法规,坚决做一只文明爬虫
- 前言
- 一、知识准备
- 二、功能解析与实现
- 1.引入库
- 2.请求准备
- 3.发起请求
- 4.数据解析
- 5.数据保存
- 6.成果展示
- 三、普通代码展示
- 四、封装代码展示
- 总结
严正声明:爬虫应严格遵守国家的相关法律法规,坚决做一只文明爬虫
前言
还在为表情包不够用而烦恼吗?
还在为表情包单一而苦恼吗?
还在为聊天的枯燥乏味而忧愁吗?
今天就让刚学习爬虫0.01天的小菜鸟为您奉上表情包大餐吧!
首先我们先了解一下爬虫的基本流程(小菜鸟理解):
- 锁定需求,搜索网址
- 分析网页,解析方法
- 仔细思考,数据保存
- 仔细测试,代码实现
- (程序优化,效率提高)
- 代码封装,较优体现
一、知识准备
- 基础知识列表
- 字符串
- 字典
- 列表及其遍历
- 准备工具
- 导包
- requests——用于发起请求
- xpath——用于解析网页
- os——数据保存(仅在图片扩展名处理时使用)
二、功能解析与实现
1.引入库
- requests 用于对网页发起请求
- lxml 用于网页的解析利用标签进行定位和获取
- os 在最后处理图片时使用,拿取后缀
代码如下:
import os
import requests
from lxml import etree
2.请求准备
代码如下
# 搜索到的符合需求的网址
url="爬取的网址"
# 爬虫伪装---在网页Request headers中有我们想要的参数---由于网站简单无需进行更多伪装
headers={'user-agent':'...' # 此网站只需ua即可爬取
}
为什么要进行伪装呢?
首先我们先要了解一下我们搜索网址并且进入网站时我们会携带什么:
访问者的ip地址、访问者的user-agent、访问者的host…(具体查看可以到访问的网站的Requests Headers中查看)
而爬虫直接访问网站会携带什么呢?爬虫标志
而网站很容易就可以辨别爬虫然后拒绝爬虫的访问——反爬
(网站反爬还有很多的措施技术,这里只是片面的了解一下反爬)
然后回归正题,将上网者携带的信息让爬虫带上不就好了嘛。
3.发起请求
网站请求方式以get和post为主,根据网站的要求选择不同的请求方式。
代码如下
response=requests.get(url,headers=headers)
print(response)
# 如果此处得到的是[response<200>]即请求成功
4.数据解析
代码如下
html=etree.HTML(response.text)
# 数据列表
data_list = html.xpath('//*[@id="app"]/div[1]/div/div[1]//div') # xpath语法
# 列表取值--遍历
for data in data_list[1:]: # 索引从1开始可从网站上观察而得img_list = data.xpath('./a/div//img') # 层层解析for imag in img_list:imag_url = "https:" + imag.xpath('@src')[0] # 拿到图片网址
5.数据保存
代码如下
# 图片名称简单表示
idx=1
# 数据保存---文件名+数据保存方式
with open('./image/第%d张' % idx + os.path.splitext(imag_url)[-1], 'wb') as file:resp = requests.get(imag_url, headers=headers).content # 图片二进制码保存file.write(resp)idx+=1print("第%d张保存成功"%idx)
6.成果展示
图片在这里哦(这里只是简单展示哦)
三、普通代码展示
代码如下(这里只抓取了第一页的数据哦)
import os.path
import requests
from lxml import etree# 网页准备,伪装
url = '...'
headers = {'user-agent': '...'
}
# 发起请求
response = requests.get(url, headers=headers)# 数据解析
html = etree.HTML(response.text)
data_list = html.xpath('//*[@id="app"]/div[1]/div/div[1]//div')
idx = 0
for data in data_list[1:]:img_list = data.xpath('./a/div//img')for imag in img_list:imag_url = "https:" + imag.xpath('@src')[0]# 数据保存with open('./image/第%d张' % idx + os.path.splitext(imag_url)[-1], 'wb') as file:resp = requests.get(imag_url, headers=headers).contentfile.write(resp)idx += 1print('第%d张保存成功' % idx)
# 程序结束提醒
print('保存成功')
四、封装代码展示
import os
import requests
from lxml import etreeclass Emojis(object):def __init__(self):self.url = '...'self.headers = {'user-agent': '...'}self.idx = 1def send_request(self, url):resp = requests.get(url, headers=self.headers)if resp.status_code == 200:return resp.textelse:return Nonedef analysis(self, resp):html = etree.HTML(resp)data_list = html.xpath('//*[@id="app"]/div[1]/div/div[1]//div')for data in data_list[1:]:img_list = data.xpath('./a/div//img')for imag in img_list:imag_url = "https:" + imag.xpath('@src')[0]self.save(imag_url)def save(self, img_url):with open('./image/%d' % self.idx + os.path.splitext(img_url)[-1], 'wb') as file:resp = requests.get(img_url, headers=self.headers).contentfile.write(resp)print("第%d张保存成功!" % self.idx)self.idx += 1def run(self):n=int(input("请输入想要爬取的页数:"))for num in range(1, n):resp = self.send_request(self.url.format(num))if len(resp) == 0:print("你已经被反爬了!")else:self.analysis(resp)if __name__ == '__main__':spider = Emojis()spider.run()
具体网址想要的小伙伴可以私信我哦——网站隐私不便于透露
总结
本文简单实现了使用Python工具,利用xpath解析方法爬取某表情包网站的程序,欢迎热爱爬虫的小伙伴们一起学习交流呀。
第一次写拉么长的博客┭┮﹏┭┮加之语言表达能力有限,希望各位大佬们对我的文章进行友好批判和指导┭┮﹏┭┮。
表情包(图片)自生产——Python爬虫xpath实现相关推荐
- 妹子说我没有表情包?没关系通过python爬虫爬取表情
需求分析 昨天,我被一个妹子嘲笑了,"仙草,你天天聊天,怎么连一个表情包都没有啊?每次发也是用系统推荐的默认表情,和一个土狗似的,笑死人了." 啊这,确实,我从来都不保存表情,所以 ...
- Python项目实战:爬取斗图网表情包图片
2019独角兽企业重金招聘Python工程师标准>>> 前言 相信大家在和别人聊天的时候都很喜欢斗图吧,斗着斗着斗忘记睡觉了,哈哈,感情得到了升华,下面来介绍一个利用Python在斗 ...
- 没有表情包都不好意思说自己是年轻人——python一键保存几千张表情包图片
现在年轻人聊天,不带点表情包都不好意思说自己是年轻人- 刚认识的朋友丢几个表情包出去分分钟拉进关系,女朋友生闷气了整两个表情包开心一下,也可以化解尴尬,没时间打字整两张表情包,礼貌而不失尴尬. 一.欲 ...
- 爬虫(4)-使用Ajax爬取今日头条表情包图片
文章目录 爬取今日头条表情包图片 1.获取信息 2.代码 改进 认为有用的话请点赞,码字不易,谢谢. 其他爬虫实战请查看:https://blog.csdn.net/qq_42754919/categ ...
- Python爬虫——XPath的使用
Python爬虫--XPath的使用 使用实例一:获取需要的文字 1.导入需要使用的模块 import urllib.request from lxml import etree 2.发送请求访问网站 ...
- Python 爬虫 xpath 数据解析基本用法
Python 爬虫 xpath 数据解析基本用法 1. 基本语法 1.1 解析 html 语法 1.2 获取标签 1.3 获取标签中的内容 1.4 获取标签中的属性 1.5 通过内容寻找结点 2. 实 ...
- 好玩的熊猫头表情包图片生成PHP源码+实测可用
正文: 好玩的熊猫头表情包图片生成PHP源码+实测可用,非常好玩的一个源码,实测搭建没问题,可以一键生成各式各样的表情包,还可以自己输入底部表情包文字啥的. 程序: wwurgs.lanzouv.co ...
- 用计算机打出惊雷这首,惊雷表情包图片-惊雷表情包图片动图大全高清免费分享 v1.0预约_手机乐园...
软件简介 惊雷表情包图片动图大全高清免费分享这里汇聚了当下十分火爆的喊麦表情包图片,不仅图片十分搞笑,配上的文字更是点睛之笔,不仅幽默风趣,还非常符合沙雕的气质,下面就为整理了十分全面的惊雷喊麦图片, ...
- 给大佬递java表情_给大佬端东西表情包app,给大佬递东西表情包图片大全免费版预约 v1.0-手游汇...
给大佬端东西表情包app是一款非常有趣的全新表情包服务应用,为用户带来各种各样的图片表情,这个表情包就是围绕着大佬,给大佬们递上各种各样的东西,配上最有趣的蘑菇头外表,让这个图片表情变得更好看更有趣, ...
最新文章
- 成功解决AttributeError : ‘GridSearchCV‘ object has no attribute ‘grid_scores_‘
- [转]GridView导出Excel总结
- 关于kotlin GPUImage的使用
- 使用RAC和Data Guard构建MAA架构
- php获取跳转前的地址,PHP获取短链接跳转后的真实地址和响应头信息的方法
- PCI总线特性及信号说明
- JQ 1.9 API在线资源
- 工作流之工单模型(一)
- 软件设计师-3.数据结构与算法基础
- NuGet是什么?为什么.NET项目中会有NuGet?如何使用NuGet程序包?
- 尚学堂Java第七章编码题
- 我选择了IT,我会用最大的热诚进军IT大技术!
- php 多图片/文件上传
- 更新被拒绝,因为远程仓库包含您本地尚不存在的提交
- [渝粤教育] 西南科技大学 农产品贮藏与加工 在线考试复习资料
- 使用海康工业相机的心路历程(一)
- Linux与MySql学习之旅(一): 离线安装MySQL和问题解决
- 平方预测误差(Squared prediction error,SPE)和霍特林统计量(Hotelling’s T2)原理
- vbs教程《模拟按键》
- mysql中的方差函数_请问关于SQL中的方差函数VAR()相关问题?
热门文章
- Rocky Linux 9.0 系统安装mysql5.7 版本
- 广东首份运用税务区块链技术的代理出口货物证明在佛山开具
- python35个保留字有哪些_V2.2 python3的35个保留字
- 抗疫得闲●致歌德几首
- linux消耗ram内存吗,linux - 释放Ubuntu 8.04服务器上的内存(RAM) - Ubuntu问答
- 丹诗尔顿灵魂品牌之源
- 扎克伯格:我们如何接管世界
- CImg库快速学习笔记
- word里面的自带编辑器公式怎么转换成math type公式
- 白名单屏蔽字 unicode字符范围