使用requests库爬取bing首页的图片
必应首页每天都会更新一张美丽的照片,那么怎么用爬虫爬取这些图片呢
附 必应url:“https://cn.bing.com”
首先查看bing源代码,找到对应图片的链接
进入bing首页,鼠标右击后点击检查
或者(F12进入开发者面板)
ps:个人认为鼠标右击效率更高一些,可以直接找到图片链接的所在位置
找到的HTML如下:
<div id="bgImgProgLoad" data-ultra-definition-src="/th?id=OHR.QingmingCandle2020_ZH-CN2729283235_UHD.jpg&rf=LaDigue_UHD.jpg&pid=hp&w=1920&h=1080&rs=1&c=4" data-explicit-bing-load="false" data-dynamic-size="true"></div>
分析这个div标签
id值:bgImgProgLoad(这个属性可以帮助我们迅速定位到该标签)
属性1:data-ultra-definition-src(值为我们要找的图片链接)
其他属性:没有价值,忽略掉
开始写python程序
首先导入我们需要的第三方库
requests
功能:模拟请求
函数:requests.get(url,headers)
属性值:
url(发起请求的url连接)
headers(设置请求头)
返回值:一个response对象
使用方法:
resp = requests.get(url=“我们的url”,headers=“我们设置的请求头”)
bs4
功能:建立一个类似于DOM树的结构,其提供的接口可以帮助我们迅速定位到我们要找的标签
函数:bs4.BeautifulSoup(html,features)
属性值:
html:要解析的内容
features:设置解析器
返回值:一个BeautifulSoup对象
使用方法:
soup = bs4.BeautifulSoup(html, features=“lxml”)
代码实现
import requests
import bs4
url = "https://cn.bing.com/"
# 设置请求头
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36"}
# 发起请求
r = requests.get(url=url, headers=headers)
html = r.text
# 解析获取的html
soup = bs4.BeautifulSoup(html, features="lxml")
# 寻找对应id的标签
img_div = soup.find(name="div", id="bgImgProgLoad")
# 可以使用 标签对象["标签属性"] 的方式获取属性值
# 在这里我们需要做一个简单的字符拼接,来形成完整的url链接
utl2 = "https://cn.bing.com/" + img_div["data-ultra-definition-src"]
# 最后,将得到的img图片存储到文件当中
# ps:获取图片的方式为 r2.content r2就是我们使用requests中get方法获取的response对象
with open("jpg1.jpg", 'wb') as j:
r2 = requests.get(url=utl2, headers=headers)
j.write(r2.content)