必应的背景真香
用必应搜索时,一直喜欢它大而美的背景图。早些时候,都是手动鼠标右键另存为;自从无法复制之后,发现通过网页源代码里找到href标签,拼接https://cn.bing.com访问图片真实链接,再右键另存为。
本着学以致用的原则,最近有在学习Python基础,于是琢磨着自动化实现每天获取背景图。不断丰富着我的桌面背景幻灯片~
Python抓取 必应 背景图
库准备
库 | 说明 |
---|---|
requests | 常用的用于http请求的模块 |
bs4 | Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库 |
lxml | lxml是python的一个解析库,支持HTML和XML的解析,支持XPath解析方式,而且解析效率非常高 |
基本原理
- 使用User-Agent模拟浏览器访问
- requests.get(图片真实URL).content可获得二进制传输内容,即为图片数据
Step 1 从https://cn.bing.com http get网页源码
Step 2 将网页源码使用BeatifulSoup进行解析
Step 3 从BeautifulSoup中获取‘#bgLink’选择器的内容
import requests
import time
from bs4 import BeautifulSoup
# 全局路径
url = "https://cn.bing.com/"
ImgBaseDir = 'C:/Users/wangxiaodong8/Pictures/Saved Pictures/bing壁纸'
def getBingBackgroundImg():
"""获取bing 网页源中背景图片url.
Args:
Returns:
返回背景图片url
例如:/th?id=OHR.GalileoMoons_ZH-CN0498325568_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp
Raises:
"""
htmlContent = requests.get(url)
# print(htmlContent.text)
soup = BeautifulSoup(htmlContent.text, 'lxml')
data = soup.select('#bgLink')
for item in data:
bkImgUrl = item.get('href')
return bkImgUrl
def downloadImg(bkImgUrl):
"""根据url下载必应背景图片
Args:
bkImgUrl: 图标url
Returns:
返回背景图片url,例如:/th?id=OHR.GalileoMoons_ZH-CN0498325568_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp
Raises:
"""
# 拼接真实的url,带User-Agent,并get 图片数据
bingBKImgUrl = url + bkImgUrl
agentHeader = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 '
'(KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36'
}
imgData = requests.get(bingBKImgUrl, headers=agentHeader).content
# 拼接图片文件名
strCurTime = time.strftime('%Y%m%d', time.localtime(time.time()))
imgPath = ImgBaseDir + '/' + 'bpic_%s.jpg' %strCurTime
# 写入图片到目录
with open(imgPath, 'wb') as f:
f.write(imgData)
if __name__ == '__main__':
bkImgUrl = getBingBackgroundImg()
downloadImg(bkImgUrl)
Step 4 执行Python脚本
...\Python\Python38\python.exe bingSpider.py
用户目录ImgBaseDir需要修改成自己的目录
Windows定时任务计划设置
- 打开控制面板 —>搜索管理工具
- 点击任务计划
- 创建定时调用必应Python脚本任务
效果截图如下: