5分钟撸了个小小爬虫....

开发 前端
这几天在用“必应”搜索时,发现必应的背景图片挺好看的,有的是风景,有的是动物。。。于是产生了一个想法,爬下来当做桌面背景图吧。。由于是每天必应的图片都会变,所以后续结合电脑自带的定时任务,可以达到每天自动抓取图片的效果。

前言

这几天在用“必应”搜索时,发现必应的背景图片挺好看的,有的是风景,有的是动物。。。于是产生了一个想法,爬下来当做桌面背景图吧。。

由于是每天必应的图片都会变,所以后续结合电脑自带的定时任务,可以达到每天自动抓取图片的效果。

开工

简单的分析下:必应首页。

 

5分钟撸了个小小爬虫....

打开 F12 ,找到对应的请求,可以很容易的看到有这么个链接,然后点一下,就会新打开一个页面,此时显示的就是背景图片。

如何下载呢?其实很简单,说下逻辑。

requests库请求主页,正则匹配地址,再用 requests 请求,将返回的 content 以二进制的形式写入文件,保存为图片。

核心代码:

  1. url = 'https://cn.bing.com'headers = {    'User-Agent': 'Mozilla/5.0 
  2.  (Macintosh; Intel Mac OS X 10_15_1) '                  'AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3  
  3. Safari/605.1.15'}r = requests.get(url=url, headers=headers)# 正则匹配 
  4. 到 url 地址a = re.findall(r'rel="preload" href="(.*?)" as="image"',  
  5. r.text)if a:    # 拼接 https://cn.bing.com/xxxxxx图片的地址     
  6. picture_url = parse.urljoin(url, a[0])    print(f'当前图片地址: 
  7. {picture_url}')    r_picture = requests.get(url=picture_url,  
  8. headers=headers)    write_file(file, r_picture.content) # 写入文件 

执行后的结果:

 

5分钟撸了个小小爬虫....

主要是正则表达式,如何书写,匹配出来,用 urllib 的 urljoin 方法拼接下图片地址即可。可以看下核心代码的相关注释。

定时任务

Python代码一共 25 行,关键是如何利用系统定时来制造每天触发的效果。

使用方法,两个。

编辑 crontab :

  1. crontab -e 

 

5分钟撸了个小小爬虫....

回车后,进入内容,用法和 vim 一样,按下 i 即可编写,然后 wq 保存。

 

5分钟撸了个小小爬虫....
  1. 0 10 * * * /Users/sy/anaconda3/bin/python /Users/sy/PycharmProjects 
  2. /python-tools/spider/bing_picture/crawl_bing.py > /Users 
  3. /sy/PycharmProjects/python-tools/spider/bing_picture/log 

第一段,是cron特有的时间配置表达式,可以看下图的简介,顺便给大家一个网址,可以在线查看其表达式的含义。而我脚本中写的则是每天十点整执行 Python。

 

5分钟撸了个小小爬虫....

工具网址:

crontab执行时间计算​tool.lu

 

5分钟撸了个小小爬虫....

写完 cron 表达式,后面跟的其实就是 python xxx.py 这样的命令,只不过,在 cron 中一定要写绝对路径,否则不生效。

再执行 python 命令的基础上,我还追加了 > xxx.log 这样,意思是将 python 脚本的打印内容输出到一个指定目录的 log 文件里。

2.查看定时任务 crontab:

  1. crontab -l 

 

5分钟撸了个小小爬虫....

cron -l 则是查看定时任务列表内容的,可以看到有多少任务配置了。如果有多个定时脚本,则可以回车换行继续添加即可。

每日自动抓取,导入图片,换背景即可。

 

5分钟撸了个小小爬虫....

总结

嗯,这就是本次的 5 分钟撸一个小爬虫系列!

本篇介绍的定时工具,其实用途很大,因为基于系统层面,所以不依赖于脚本,只要你电脑开着,就可以随心所欲的触发你写的脚本,而不依赖你脚本本身使用代码的定时任务!

责任编辑:未丽燕 来源: 今日头条
相关推荐

2020-12-07 11:23:32

Scrapy爬虫Python

2021-10-12 09:24:02

Java线程池源码

2021-05-31 07:22:46

ORM框架程序

2012-06-28 10:26:51

Silverlight

2021-04-30 16:23:58

WebRTC实时音频

2021-01-29 11:43:53

SSHLinux命令

2020-09-14 11:30:26

HTTP3运维互联网

2020-10-30 15:04:16

开发技能代码

2010-11-03 11:01:05

求职面试

2020-11-23 16:23:59

CSS设计技术

2020-12-17 10:00:16

Python协程线程

2021-01-29 11:25:57

Python爬山算法函数优化

2009-11-26 11:19:52

NIS服务器

2011-07-11 09:58:52

2021-03-12 09:45:00

Python关联规则算法

2021-06-07 12:08:06

iOS Python API

2020-05-15 07:30:08

黑客Thunderbolt漏洞

2021-03-23 15:35:36

Adam优化语言

2016-10-13 13:01:51

2016-07-11 16:04:26

慧点科技
点赞
收藏

51CTO技术栈公众号