网站首页 > 技术文章 正文
【一、项目背景】
你是否在寻找可以与高手斗图的应用? 你是否在寻找可以自制表情的应用?你是否在寻找最全、最爆笑的表情库?
斗图网是一个收集了成千上万的撕逼斗图表情包,在这里你可以快速找到想要的表情, 更好的“斗图”,助您成为真正的斗图终结者!
【二、项目目标】
下载表情包,保存文档。
【三、涉及的库和网站】
1、网址如下:
https://www.doutula.com/photo/list/?page={}
2、涉及的库:requests****、lxml、ssl****、time
3、软件:PyCharm
【四、项目分析】
1、如何找到表情包图片地址?
F12右键检查,找到对应的图片的地址。
观察网址的变化(一般取前三页):
https://www.doutula.com/photo/list/?page=1
https://www.doutula.com/photo/list/?page=2
https://www.doutula.com/photo/list/?page=3
发现点击下一页时,page{}每增加一页自增加1,用{}代替变换的变量,再用for循环遍历这网址,实现多个网址请求。
2. 如何解除ssl验证?
因为这个网址是https,需要导入一个ssl模块,忽略ssl验证。
3. ****如何获取Cookie?
右键检查,找到NetWork,随便复制一个Cookie即可。
【五、项目实施】
1、我们定义一个class类继承object,然后定义init方法继承self,再定义一个主函数main继承self。导入需要的库。
import requests
from lxml import etree
from fake_useragent import UserAgent
import ssl # ssl验证
import time
ssl._create_default_https_context = ssl._create_unverified_context
class Emoticon(object):
def __init__(self):
pass
def main(self):
pass
if __name__ == '__main__':
spider = Emoticon()
spider.main()
2、导入网址和构造请求头,防止反爬。
def __init__(self):
self.headers = {'User-Agent': 'Mozilla/5.0'}
self.url = 'https://www.doutula.com/photo/list/?page={}'
3、发送请求 ,获取响应,页面回调,方便下次请求。
def get_page(self, url):
res = requests.get(url=url, headers=self.headers)
html = res.content.decode("utf-8")
return html
4、xpath解析页面。
这里我们先获取父节点,在通过for循环遍历,找到对应的子节点(图片地址)。
image = parse_html.xpath('//ul[@class="list-group"]/li/div/div//a')
for i in image:
image_src_list = i.xpath('.//img/@data-original')[0]
image_name = i.xpath('.//img//@alt')[0]
运行的结果:
5、对图片地址发生请求,取对应图片地址后10位,作为图片的命名,写入文件(每一张图片的后缀名不一样,所有这里不采用image_name作为图片的命名)。
html2 = requests.get(url=image_src_list, headers=self.headers).content
name = "/图/" + image_src_list[-20:]
#print(name[-10:])
with open(name[-10:], 'wb') as f:
f.write(html2)
print("%s 【下载成功!!!!】" % image_name)
print("==================================")
6、调用方法,实现功能。
html = self.get_page(url)
self.parse_page(html)
print("======================第%s页爬取成功!!!!=======================" % page)
7、time模块打出执行时间。
start = time.time()
end = time.time()
print('执行时间:%.2f' % (end - start))
【六、效果展示】
1、点击绿色小三角运行输入起始页,终止页。
2、将下载成功信息显示在控制台。
3、保存文档,在本地可以看到斗图。
【七、总结】
1、不建议抓取太多数据,容易对服务器造成负载,浅尝辄止即可。
2、本文基于Python网络爬虫,利用爬虫库,获取表情包,存入文档。
3、希望通过这个项目能够了解到,对于HTTPS网站,解除ssl验证的有大致的了解。
4、可以尝试的去爬取其他的分类的表情包,按照步骤去实现,实现的时候,总会有各种各样的问题,切勿眼高手低,勤动手,才可以理解的更加深刻。
5、需要本文源码的小伙伴,后台回复“斗图达人”四个字,即可获取。
想要学习更多,请前往Python爬虫与数据挖掘专用网站:http://pdcfighting.com/
猜你喜欢
- 2025-05-05 如何用Python玩转爬虫(怎么利用python爬虫爬数据)
- 2025-05-05 豆瓣9.4,Python网络爬虫实战,助你快速精通爬虫,PDF拿走不谢
- 2025-05-05 盘点一个使用playwright实现网络爬虫的实战案例
- 2025-05-05 别再用手敲了,这个工具可以自动生成python爬虫代码
- 2025-05-05 Python应用短文,如何自制一个简易的网络爬虫
- 2025-05-05 你们想要的Python爬虫教程来了:从原理到实践
- 263℃Python短文,Python中的嵌套条件语句(六)
- 262℃python笔记:for循环嵌套。end=""的作用,图形打印
- 261℃PythonNet:实现Python与.Net代码相互调用!
- 256℃Python实现字符串小写转大写并写入文件
- 255℃Python操作Sqlserver数据库(多库同时异步执行:增删改查)
- 113℃原来2025是完美的平方年,一起探索六种平方的算吧
- 96℃Python 和 JavaScript 终于联姻了!PythonMonkey 要火?
- 87℃Ollama v0.4.5-v0.4.7 更新集合:Ollama Python 库改进、新模型支持
- 最近发表
- 标签列表
-
- python中类 (31)
- python 迭代 (34)
- python 小写 (35)
- python怎么输出 (33)
- python 日志 (35)
- python语音 (31)
- python 工程师 (34)
- python3 安装 (31)
- python音乐 (31)
- 安卓 python (32)
- python 小游戏 (32)
- python 安卓 (31)
- python聚类 (34)
- python向量 (31)
- python大全 (31)
- python次方 (33)
- python桌面 (32)
- python总结 (34)
- python浏览器 (32)
- python 请求 (32)
- python 前端 (32)
- python验证码 (33)
- python 题目 (32)
- python 文件写 (33)
- python中的用法 (32)