python爬虫抓取必应背景图片
语言:python 3.0
之前每天都在火狐浏览器上查看背景图片存储必应背景图片,或者在谷歌浏览器上查看元素,这样总是觉得太麻烦,所以还是想着用python写一个脚本进行爬虫,废话少说,进入正题
-----------------------------------------------------我是分割线-------------------------------------------------------------------
首先查看源码,需要先找到背景图片的直链地址,很幸运的是图片的直链被放在了源码开始最为显眼对的地方
其中href的内容便是我们所需要的直链,点开便是我们想要的图片
所以最主要的目的是获得这个链接,自然,有点前端知识的都知道(当然我也只是略知一二),我们要获取这个对象,可以通过其独一无二的Id值来获取,而Id号是不会变化的,那便是 “bgLink”。
这个问题解决了,直接在python中采取相应的工具就好了。
-----------------------------------------------------我是分割线-------------------------------------------------------------------
-----------------------------------------------------我是分割线二号-------------------------------------------------------------------
我们采用requests与BeautifulSoup两个包(一般python不自带,需要自行安装)
第一步,先获取目标网页代码
url='https://cn.bing.com/';
demo=getHTMLText(url)``
这里的getHTMLText是对网页发出请求,并且在相应之后返回网页HTML代码的,具体代码如下:
def getHTMLText(url):
'''
此函数用于获取网页的html文档
'''
try:
#获取服务器的响应内容,并设置最大请求时间为6秒
res = requests.get(url, timeout = 6)
#判断返回状态码是否为200
res.raise_for_status()
#设置该html文档可能的编码
res.encoding = res.apparent_encoding
#返回网页HTML代码
return res.text
except:
return'产生异常'
第二步,解析获取的代码,定位Id为“bgLink”的对象,并且获取其href属性的值,取得直链
soup=BeautifulSoup(demo,'html.parser')
pic=url+soup.find(id='bgLink').get('href')
第三步,获取图片名字,以便重命名
图片名字在Id为“sh_cp”中,这是通过观察源码得到的,姓名属性为"title"
然后还需要把名字中的’/'替换,不然后面存储在本地的时候会出错
name=soup.find(id='sh_cp').get('title')
name=name.replace('/','_',5)
第四步,将图片储存在本地
name='D:/bingpicture/'+name+'.jpg'
r=requests.get(pic)
with open(name,'wb')as f:
f.write(r.content)
大功告成,我们只需要运行脚本就能够直接下载好图片到本地啦
-----------------------------------------------------我是分割线二号-------------------------------------------------------------------
最后附上完整代码,请大家多多指教! ^ v ^
import requests
from bs4 import BeautifulSoup
def getHTMLText(url):
'''
此函数用于获取网页的html文档
'''
try:
#获取服务器的响应内容,并设置最大请求时间为6秒
res = requests.get(url, timeout = 6)
#判断返回状态码是否为200
res.raise_for_status()
#设置该html文档可能的编码
res.encoding = res.apparent_encoding
#返回网页HTML代码
return res.text
except:
return'产生异常'
def main():
'''
主函数
'''
print("执行中....")
#目标网页
url='https://cn.bing.com/';
demo=getHTMLText(url)
#解析HTML代码
soup=BeautifulSoup(demo,'html.parser')
#得到图片网址
pic=url+soup.find(id='bgLink').get('href')
#获得图片名字
name=soup.find(id='sh_cp').get('title')
#将名字中的/替换
name=name.replace('/','_',5)
#储存在D:/bingpicture/下
name='D:/bingpicture/'+name+'.jpg'
r=requests.get(pic)
with open(name,'wb')as f:
f.write(r.content)
main()