语言: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()
-
-