爬取必应美图

必应主页的图片及介绍

必应每日的图片非常漂亮,所以想 get 下来,可是官方提供的下载有必应水印,所以只能自己找地址下载了。另外将每日美图的介绍也一并爬下来保存到 txt 中吧。

  • 必应美图
    在必应主页上,分析网络情况,可以发现图片的链接
    图片的链接.png

    查看响应
    爬取必应美图_第1张图片

    至此我们可以开始写爬虫了,主要就是 requests 请求这个网址,然后使用 json 解析。可以在 GitHub 上查看代码,并没有写异常处理。

如果是在 Linux 平台上,想直接将必应美图设置为壁纸,可以查看 这个主页 传送门
GitHub 的这个项目请点这
可以学习学习源码。

  • 美图的介绍
    打开 firefox 的审查元素功能,找到介绍对应的标签
    爬取必应美图_第2张图片
    介绍标签

    有人或许就开始解析了,我曾经也是这么干的,但是你 get 到页面源代码时会发现根本找不到这段内容,为什么呢?后来在知乎上找到了答案。
    只有在首页点击那个详细讯息(就那个感叹号)的按钮时,才会出现详细讯息,这里采用了异步加载技术,就是通过 js 代码来实现向服务器请求数据。这个有兴趣可以详细了解。
    但是这里又有问题了,在火狐和谷歌浏览器中,请求是不太一样的。
    Firefox

    爬取必应美图_第3张图片
    Chrome

    但是通过查看其提交数据发现基本是一样的,只有一个参数不同,估计是因为浏览器的原因,所以我也很好奇为什么这里。
    爬取必应美图_第4张图片
    Firefox

    爬取必应美图_第5张图片
    Chrome

    所以找到了我们就可以开始动手来实现我们的目的了。通过分析其 url 参数,我们可以构造其基本 url 是 http://cn.bing.com/cnhp/life, 然后提交有关数据。
    以 FireFox 为例,IG参数可以在页面代码中找到。
import requests
req = requests.get('http://cn.bing.com/')
ig = req.text.split('IG:"')[1].split('"')[0]
# print ig
data = {
    'ensearch': '0', 'IID': 'SERP.5044', 'IG': ig
}
z = requests.get('http://cn.bing.com/cnhp/life', data)
# 将返回的数据保存起来,方便查找数据
# with open("biying.html", "wb") as f:
#     f.write(zeq.text)

html = bs(z.text, "lxml")
info = html.find("div", id="hplaSnippet")
print info.string.strip()

这样就可以 get 到介绍了,美滋滋。。。
这个提交数据有可能随着时间改变,只要构造对应数据就好了。

你可能感兴趣的:(爬取必应美图)