使用python爬取taptap网站游戏截图的步骤
作者:LiuYJ1 发布时间:2021-09-17 07:44:34
标签:python,爬虫,taptap游戏
今天使用python写了一个简单的爬虫,用来下载taptap网站的游戏截图。下面说下具体的实现方法。
在搜索框中搜索“原神”
打开浏览器的开发者选项,从详情按钮里面跳转到游戏的页面,点击详情之后,跳转页面
这时候看到,浏览器地址:https://www.taptap.com/app/168332,tap官网的域名加上app/和图一的游戏id,可以使用re模块正则表达式模块从接口中获取到这个id
x_ua = 'V=1&PN=WebApp&LANG=zh_CN&VN_CODE=4&VN=0.1.0&LOC=CN&PLT=PC&DS=Android&UID=97bb961f-bf03-4c7a-8cd7-8d6d8655d9c8&DT=PC'
def search(game_name):
"""根据游戏名搜索提取出游戏id"""
url = 'https://www.taptap.com/webapiv2/mix-search/v1/by-keyword'
data = {
'kw': f'{game_name}',
'X-UA' : x_ua
# 'X-UA': 'V=1&PN=WebApp&LANG=zh_CN&VN_CODE=4&VN=0.1.0&LOC=CN&PLT=PC&DS=Android&UID=97bb961f-bf03-4c7a-8cd7-8d6d8655d9c8&DT=PC'
}
r = requests.get(url=url, params=data)
pattern = re.compile('"type":"app","identification":"app:(.+?)"', re.S)
r1 = pattern.findall(r.text)
#从response中提取游戏id
return r1[0]
然后打开开发者选项观察接口,可以从这个接口中获取到游戏截图的链接,
把数据json格式化一下,可以发现在data下,"screenshots"下的“orignal_url”就是截图的链接。使用json.load转换成字典,就可以比较方便的取出内容了。
url = f'https://www.taptap.com/webapiv2/app/v2/detail-by-id/{search(game_name)}'
r = requests.get(url=url, params={'X-UA': x_ua})
data = json.loads(r.text)
#转换为字典格式
original_url = data.get('data').get('screenshots')
#提取出截图url
之后使用一个循环将图片保存到本地
for i in original_url:
time.sleep(0.5)
game_original_url = i.get('original_url')
print(game_original_url, type(game_original_url))
respones = requests.get(game_original_url)
img = respones.content
file_name = game_original_url[-36: -4]
screenshots = os.path.join(os.path.dirname(__file__), f'screenshots/{game_name}')
if not os.path.exists(screenshots):
os.makedirs(screenshots)
file_path = os.path.join(screenshots, file_name)
with open(file_path + '.png', 'wb') as f:
f.write(img)
完整代码:
import os
import requests
import json
import re
import time
x_ua = 'V=1&PN=WebApp&LANG=zh_CN&VN_CODE=4&VN=0.1.0&LOC=CN&PLT=PC&DS=Android&UID=97bb961f-bf03-4c7a-8cd7-8d6d8655d9c8&DT=PC'
def search(game_name):
"""根据游戏名搜索提取出游戏id"""
url = 'https://www.taptap.com/webapiv2/mix-search/v1/by-keyword'
data = {
'kw': f'{game_name}',
'X-UA' : x_ua
# 'X-UA': 'V=1&PN=WebApp&LANG=zh_CN&VN_CODE=4&VN=0.1.0&LOC=CN&PLT=PC&DS=Android&UID=97bb961f-bf03-4c7a-8cd7-8d6d8655d9c8&DT=PC'
}
r = requests.get(url=url, params=data)
pattern = re.compile('"type":"app","identification":"app:(.+?)"', re.S)
r1 = pattern.findall(r.text)
#从response中提取游戏id
return r1[0]
def download_screenshots(game_name):
url = f'https://www.taptap.com/webapiv2/app/v2/detail-by-id/{search(game_name)}'
r = requests.get(url=url, params={'X-UA': x_ua})
data = json.loads(r.text)
#转换为字典格式
original_url = data.get('data').get('screenshots')
#提取出截图url
try:
for i in original_url:
time.sleep(0.5)
game_original_url = i.get('original_url')
print(game_original_url, type(game_original_url))
respones = requests.get(game_original_url)
img = respones.content
file_name = game_original_url[-36: -4]
screenshots = os.path.join(os.path.dirname(__file__), f'screenshots/{game_name}')
if not os.path.exists(screenshots):
os.makedirs(screenshots)
file_path = os.path.join(screenshots, file_name)
with open(file_path + '.png', 'wb') as f:
f.write(img)
except:
print('下载失败')
if __name__ == '__main__':
download_screenshots('lol')
来源:https://www.cnblogs.com/liuyingjie123/p/14716352.html
0
投稿
猜你喜欢
- 一 创建mappingPUT test{ "mappings": { "
- 由于requests是http类接口的核心,因此封装 * 虑问题比较多:1. 对多种接口类型的支持;2. 连接异常时能够重连;3. 并发处理的
- 在本篇文章当中主要给大家深入介绍在 cpython 当中非常重要的一个数据结构 code object! 在上一篇文章 深入理解 pytho
- 最近圣诞节快到啦,CSDN的热搜也变成了”代码画颗圣诞树“,看了几篇博客,发现原博主把一些圣诞树给融合在了一起。我更喜欢树叶🍃更茂盛的感觉,
- 本文实例讲述了PHP数据库表操作的封装类及用法。分享给大家供大家参考,具体如下:数据库表结构:CREATE TABLE `test_user
- 1. 打开Anaconda Prompt(在命令行格式下,输入代码,建立pytorch环境、安装pytorch、测试pytorch过程)2.
- 本文实例讲述了Python使用Dijkstra算法实现求解图中最短路径距离问题。分享给大家供大家参考,具体如下:这里继续前面一篇《Pytho
- python 3.x版本print输出不换行的格式如下:print(x, end="")其中,end=&quo
- 查询所有数据库的总大小方法如下:mysql> use information_schema;mysql> select conc
- 最近在研究雨哲软件采集程序的时候,需要获取真实软件地址时遇到了需要读取跳转页面跳转后的真实地址的问题。在网上找了很多方法,使用WinHttp
- 有时候想要把几张图放在一起plot,比较好对比,subplot和subplots都可以实现,具体对比可以查看参考博文。这里用matplotl
- 如果要用某个开源框架,需要安装多个依赖包可以如下操作:如依赖文件形式如下(可以不要版本号):txt文件名为requirements.txt,
- 我们曾经提到,Oyster.com的Python web服务器怎样利用一个巨大的Python dicts(hash table),缓存大量的
- 需求:利用vue实现二维码扫描;插件:QRCodeReader;插件下载npm install --save vue-qrcode-read
- 1. 前言我们已经知道,对于InnoDB存储引擎而言,页是磁盘和内存交互的基本单位。哪怕你要读取一条记录,InnoDB也会将整个索引页加载到
- 网站能切换几套CSS风格早已不是什么新鲜事了。大家也都知道怎么去弄。早上发现一个有意思得站点 http://www.leemunroe.co
- 三维可视化系统的建立依赖于三维图形平台, 如 OpenGL、VTK、OGRE、OSG等, 传统的方法多采用OpenGL进行底层编程,即对其特
- 本文转自微信公众号:"算法与编程之美"1、前言侧滑是一个非常实用的选项组件,它在Android App应用中非常广泛,常
- python乱序字符串排序什么是乱序字符串排序乱序字符串排序是指一个字符串是另一个字符串的乱序排序,比如apple就是eppal的乱序字符串
- matplotlib制作简单的动画动画即是在一段时间内快速连续的重新绘制图像的过程.matplotlib提供了方法用于处理简单动画的绘制:i