python爬虫抓取必应背景图片

语言:python 3.0
之前每天都在火狐浏览器上查看背景图片存储必应背景图片,或者在谷歌浏览器上查看元素,这样总是觉得太麻烦,所以还是想着用python写一个脚本进行爬虫,废话少说,进入正题

-----------------------------------------------------我是分割线-------------------------------------------------------------------

首先查看源码,需要先找到背景图片的直链地址,很幸运的是图片的直链被放在了源码开始最为显眼对的地方

python如何设置窗口背景为透明_爬虫


其中href的内容便是我们所需要的直链,点开便是我们想要的图片

python如何设置窗口背景为透明_分割线_02


所以最主要的目的是获得这个链接,自然,有点前端知识的都知道(当然我也只是略知一二),我们要获取这个对象,可以通过其独一无二的Id值来获取,而Id号是不会变化的,那便是 “bgLink”。

这个问题解决了,直接在python中采取相应的工具就好了。
-----------------------------------------------------我是分割线-------------------------------------------------------------------

-----------------------------------------------------我是分割线二号-------------------------------------------------------------------
我们采用requestsBeautifulSoup两个包(一般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()