查看原文
其他

爬了下Unsplash上的高清壁纸,总有一款适合你

shenzhongqiang Python与数据分析 2020-09-14

Unsplash是个高清摄影图片的网站,里面的照片非常精美,分辨率也很高,最重要的是,所有的照片都没有版权,无须向原作者申请授权,即可任意使用。

最近闲暇的时候写了个爬虫爬了下Unsplash上的那些高赞的壁纸。爬虫原理非常简单,就是爬取所有的壁纸,然后筛选那些赞数最高的图片。

代码实现

第一步我们爬取Unsplash所有的壁纸图片信息,并存入MongoDB,代码如下

def get_image_by_page(page_no):    url = "https://unsplash.com/napi/collections/1065976/photos?page={}&per_page=10&order_by=latest&share_key=a4a197fc196734b74c9d87e48cc86838".format(page_no)    r = requests.get(url, verify=False)    data = r.json()    return datadef get_images():    page_no = 1    client = pymongo.MongoClient()    db = client["unsplash"]    while True:        result = get_image_by_page(page_no)        if len(result) == 0:            break        db.wallpaper.insert_many(result)        print(page_no)        page_no += 1        time.sleep(10)

爬下来的数据里面包含了几个重要的字段。

我们最关心的就是likes这个字段,这个里面存了图片的赞数,后续我们筛选高赞图片的时候会用到。

还有两个字段分别是width和height,这是图片的宽度和高度,因为我们这里关注的是桌面壁纸,所以只关心宽度大于高度的那些壁纸。

爬完图片信息后,接下来我们从数据库筛选高赞图片,代码如下

def get_top_liked_images():    client = pymongo.MongoClient()    db = client["unsplash"]    cursor = db.wallpaper.aggregate([        {"$match": {"likes": {"$gte": 1000}}}    ])    path = os.path.dirname(__file__)    path = os.path.join(path, "wallpaper")    for item in cursor:        url = item["urls"]["raw"]        width = item["width"]        height = item["height"]        if width <= height:            continue        r = requests.get(url, verify=False)        filename = "{}.jpg".format(int(time.time()))        filepath = os.path.join(path, filename)        with open(filepath, "wb") as f:            f.write(r.content)        print(filepath)        time.sleep(10)

这里我们会根据图片信息里的URL去下载图片。需要注意的是,如果过于频繁的爬取Unsplash,会导致爬虫被封,所以这里每次下载完都会睡个10秒钟。

高赞壁纸

我们从爬取的结果里面精选了80张高赞壁纸,没有加任何水印,放在这里。不过微信对上传的图片作了压缩,所以上传后的图片不是原图,分辨率有些损失。需要原图的话在文末有获取方式。

下面是80张无水印高赞壁纸,大家看看最喜欢哪一张呢,欢迎在留言里告诉我~

1

2

3

4

5


6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36


37

38

39

40

41

42

43

44

45


46

47

48


49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80


完整代码已上传github,所有原图已上传百度网盘,可在公众号后台回复unsplash获取。


最近读者群二群建立了,欢迎小伙伴们加入。群内已有几位技术大咖加入,后续还会拉更多的大牛进群,欢迎各位学习道路上的小伙伴一起加入进来。


扫下方管理员微信,管理员拉你入群~


推荐阅读:


◆ ◆ ◆  ◆ ◆



    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存