作者:才哥
☆
大家好,我是才哥。
今天我们介绍一个简单爬虫程序,关于斗图的!!
斗图嘛
只想说,从此以后,斗图就不用怕谁了!!
来,开干!
干
那我们就按照顺序来吧,先导入需要用到的库:
import requests
import re
import os
等等,你这个导入库没在正文目录下面啊!
没事,接下来我们开始表演就行!
请开始你的表演
这里我们要爬取的网站是斗图啦:https://www.doutula.com/
。
# 页面变化项是 keyword 和 page,分别对应的搜索关键词和搜索结果页码
url = f'https://www.doutula.com/search?type=photo&more=1&keyword={keyword}&page={page}'
url
是不是很开心?!
开心你就蹦一蹦~~
开心
我们还是直接用requests
库进行数据请求即可,这里需要注意的是 需要加上带浏览器的请求头,否则会收到404
的错误码!
由于这里我用到re
正则表达式进行数据解析,所以,可以先将请求的文本数据中非字符部分去掉,具体看下面代码就好啦。
headers = {
"Accept-Encoding": "Gzip", # 使用gzip压缩传输数据让访问更快
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:83.0) Gecko/20100101 Firefox/83.0",
}
# 搜索页面数据
def get_text(keyword,page):
url = f'https://www.doutula.com/search?type=photo&more=1&keyword={keyword}&page={page}'
# 请求数据
resp = requests.get(url,headers=headers)
# 去掉非字符
text = re.sub('\s','',resp.text)
return text
是不是觉得很简单,很不错!!
不错哟
我们直接在页面开发者模式下,element
元素找到某个表情包,然后在右侧可以看到该表情包所在节点区域,找啊找啊,就找到了表情包的图片地址。
页面
找到了表情包图片地址后,我们直接用正则表达式解析出他们进行处理就好啦。
为了处理的准确性,这里可以先正则解析出页面中全部表情所在区域,然后再在这个区域里解析每个表情包的图片地址,接着遍历全部的表情包地址进行图片下载。
需要注意的是,我这边想将不同关键词搜索结果下的表情包存在不同关键词文件夹里,所以用到了os.mkdir
创建关键词文件夹的方式,当然在创建前也需要现判断是否已经存在os.path.exists
。
直接看代码吧!!
???
# 表情包下载
def down_meme(keyword):
# 由于表情较多,这里只取10页(也有接近700左右)
pages = 10
num = 0
for page in range(1,pages+1):
text = get_text(keyword,page)
# 表情包区域
search_result = re.findall(r'divclass="search-resultlist-group-item"(.*?)class="text-center"',text)[0]
# 表情包下载地址
meme_urls = re.findall(r'"data-original="(.*?)"',search_result)
# 下载每页的表情包
for meme_url in meme_urls:
num += 1
# 表情包文件名
meme_name = re.findall(r'http://img.doutula.com/.*/(.*)',meme_url)[0]
meme_img = requests.get(meme_url)
# 表情包内容 bytes 格式
meme = meme_img.content
# 写入本地(判断关键字文件夹是不是存在,不存在则创建一个)
if not os.path.exists(f'./{keyword}'):
os.mkdir(f'./{keyword}')
with open(f'./{keyword}/{meme_name}','wb') as f:
f.write(meme)
print(f'{num} 个 {keyword} 表情包已经下载...')
是不是很简单,很牛逼??
牛逼?
最后,我们就可以进行表情包的自定义下载啦!
记得加上以下代码:
if __name__ == "__main__":
# keyword = '呵呵'
keyword = input('请输入你想查询的表情包:')
down_meme(keyword)
代码运行起来,666
表情包刷起来!!!
表情包下载
如果你在pc端微信,则直接将下载的表情包拖进对话框就行;如果你是手机的话,将文件导入手机,然后以照片形式发送亦可!
请开启你的斗图模式!!
斗图
以上就是本次全部内容,简单粗暴有没有!!
简单粗暴
还等什么,斗图去吧!
当然了,大家可以后台回复 955
获取本文完整代码,可直接运行!
温馨提示:以后我们的所有演示文件及代码都只需要后台回复 955
即可领取!
最后,喜欢的话就点个赞,在看一个吧!
(๑′ᴗ‵๑)I Lᵒᵛᵉᵧₒᵤ❤