5分鐘擼了個小小爬蟲....
前言
這幾天在用“必應”搜索時,發(fā)現(xiàn)必應的背景圖片挺好看的,有的是風景,有的是動物。。。于是產(chǎn)生了一個想法,爬下來當做桌面背景圖吧。。
由于是每天必應的圖片都會變,所以后續(xù)結(jié)合電腦自帶的定時任務,可以達到每天自動抓取圖片的效果。
開工
簡單的分析下:必應首頁。

打開 F12 ,找到對應的請求,可以很容易的看到有這么個鏈接,然后點一下,就會新打開一個頁面,此時顯示的就是背景圖片。
如何下載呢?其實很簡單,說下邏輯。
requests庫請求主頁,正則匹配地址,再用 requests 請求,將返回的 content 以二進制的形式寫入文件,保存為圖片。
核心代碼:
- url = 'https://cn.bing.com'headers = { 'User-Agent': 'Mozilla/5.0
- (Macintosh; Intel Mac OS X 10_15_1) ' 'AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3
- Safari/605.1.15'}r = requests.get(url=url, headers=headers)# 正則匹配
- 到 url 地址a = re.findall(r'rel="preload" href="(.*?)" as="image"',
- r.text)if a: # 拼接 https://cn.bing.com/xxxxxx圖片的地址
- picture_url = parse.urljoin(url, a[0]) print(f'當前圖片地址:
- {picture_url}') r_picture = requests.get(url=picture_url,
- headers=headers) write_file(file, r_picture.content) # 寫入文件
執(zhí)行后的結(jié)果:

主要是正則表達式,如何書寫,匹配出來,用 urllib 的 urljoin 方法拼接下圖片地址即可??梢钥聪潞诵拇a的相關(guān)注釋。
定時任務
Python代碼一共 25 行,關(guān)鍵是如何利用系統(tǒng)定時來制造每天觸發(fā)的效果。
使用方法,兩個。
編輯 crontab :
- crontab -e

回車后,進入內(nèi)容,用法和 vim 一樣,按下 i 即可編寫,然后 wq 保存。

- 0 10 * * * /Users/sy/anaconda3/bin/python /Users/sy/PycharmProjects
- /python-tools/spider/bing_picture/crawl_bing.py > /Users
- /sy/PycharmProjects/python-tools/spider/bing_picture/log
第一段,是cron特有的時間配置表達式,可以看下圖的簡介,順便給大家一個網(wǎng)址,可以在線查看其表達式的含義。而我腳本中寫的則是每天十點整執(zhí)行 Python。

工具網(wǎng)址:
crontab執(zhí)行時間計算tool.lu

寫完 cron 表達式,后面跟的其實就是 python xxx.py 這樣的命令,只不過,在 cron 中一定要寫絕對路徑,否則不生效。
再執(zhí)行 python 命令的基礎上,我還追加了 > xxx.log 這樣,意思是將 python 腳本的打印內(nèi)容輸出到一個指定目錄的 log 文件里。
2.查看定時任務 crontab:
- crontab -l

cron -l 則是查看定時任務列表內(nèi)容的,可以看到有多少任務配置了。如果有多個定時腳本,則可以回車換行繼續(xù)添加即可。
每日自動抓取,導入圖片,換背景即可。

總結(jié)
嗯,這就是本次的 5 分鐘擼一個小爬蟲系列!
本篇介紹的定時工具,其實用途很大,因為基于系統(tǒng)層面,所以不依賴于腳本,只要你電腦開著,就可以隨心所欲的觸發(fā)你寫的腳本,而不依賴你腳本本身使用代碼的定時任務!