(方案废弃)python抓包Bing背景图片转存本地(转,改);电脑版、手机版;PC、Mobile;国内版、国际版
原理、前置与源码请参照:
https://blog.csdn.net/weixin_44835732/article/details/103801410
修改说明部分
- 备注名称为{YYYYMMDD_图片标题}.jpg
- 提取手机版背景图片(即修改 请求头模拟手机进入)
// 20220105 添加
3. 国际版背景图片也可下载,需手动调整url=en | ch
// 20220209 添加- 自动下载两个版本,废除
3
的修改方法
// 20220302 修复BUG- 当获取图片有地址时获取错误
// 20220307 修复BUG- 当图片名称带有非法文件字符时,报错
实际代码展示
#!/usr/bin/python
# -*- coding: <encoding unicode> -*-
# 使用到的库,requests库 和 lxml库需要自己在cmd窗口里安装,下载安装命令在后面的括号里
# requests (pip install requests)
# lxml (pip install lxml)
# datetime
# time
# 运行环境
# python版本:Anaconda3(python3)
# 编辑器:PyCharm
# 浏览器:Chrome
import os
import time
import datetime
import re
import requests
from lxml import etree
# 请求主页面(ch:国内版, en:国际版)
root = "http://cn.bing.com"
ch = "http://cn.bing.com"
en = "http://cn.bing.com/?ensearch=1"
def E_trans_to_C(string):
E_pun = u',.!?[]()<>"\'/'
C_pun = u',。!?【】()《》“‘-'
table= {ord(f):ord(t) for f,t in zip(E_pun,C_pun)}
return string.translate(table)
def main(url):
goGetBg(url, 'C:/bing/图片/BACKGRAND/PC/', 'pc')
# datetime.datetime.now().sleep(2)
goGetBg(url, 'C:/bing/图片/BACKGRAND/M/', 'mobile')
def goGetBg(url, localFolder, driver):
if driver == 'mobile':
head = {
'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1',
}
rs = requests.get(url, headers=head)
else:
rs = requests.get(url)
rs.encoding = rs.apparent_encoding
# 对网页解析
html = etree.HTML(rs.text)
img = html.xpath('//*[@id="preloadBg"]/@href')
name = html.xpath('//*[@class="title"]/text()')
require = re.search(r"(?<=http[s]://)[.\w-]*(:\d{,8})?((?=/)|(?!/))", img[0])
str_imgUrl = (root if require == None else '') + img[0]
# 获取图片内容
imgRs = requests.get(str_imgUrl)
time_now = datetime.datetime.now()
str_time = datetime.datetime.strftime(time_now, "%Y%m%d_")
# print(time)
# 图片保存地址 C:\Users\18842\OneDrive\图片\BACKGRAND
folder = localFolder
path = (folder + "{}.jpg").format(str_time + E_trans_to_C(name[0]))
with open(path, "wb") as f:
f.write(imgRs.content)
str_time_ditail = datetime.datetime.strftime(time_now, "%Y/%m/%d %H:%M:%S")
print("{} {}保存成功 日期:{}".format(name[0], driver, str_time_ditail))
#region 入口 按天循环访问
if __name__ == '__main__':
while 1:
main(ch)
time.sleep(2)
main(en)
time.sleep(24 * 60 * 60)
#endregion
#region cmd窗口运行 暂停查看是否成功
# main()
# print('下载保存bing背景图片脚本完成!!!')
# os.system('pause')
#endregion
细节部分,对于仅使用的可不看
rs.encoding = rs.apparent_encoding
由于在bing与代码定义中都是UTF-8
所以改不改都可行 具体变化细节未知rs.content
&rs.text
源码中text
注释Content of the response, in unicode.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?