5分鐘擼了個小小爬蟲....

前言

這幾天在用“必應”搜索時,發現必應的背景圖片挺好看的,有的是風景,有的是動物。。。於是產生了一個想法,爬下來當做桌面背景圖吧。。

由於是每天必應的圖片都會變,所以後續結合電腦自帶的定時任務,可以達到每天自動抓取圖片的效果。

開工

簡單的分析下:必應首頁。


5分鐘擼了個小小爬蟲....


打開 F12 ,找到對應的請求,可以很容易的看到有這麼個鏈接,然後點一下,就會新打開一個頁面,此時顯示的就是背景圖片。

如何下載呢?其實很簡單,說下邏輯。

requests庫請求主頁,正則匹配地址,再用 requests 請求,將返回的 content 以二進制的形式寫入文件,保存為圖片。

核心代碼:

<code>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) # 寫入文件/<code>

執行後的結果:


5分鐘擼了個小小爬蟲....


主要是正則表達式,如何書寫,匹配出來,用 urllib 的 urljoin 方法拼接下圖片地址即可。可以看下核心代碼的相關注釋。

定時任務

Python代碼一共 25 行,關鍵是如何利用系統定時來製造每天觸發的效果。

windows系統:

如果你是 windows 環境,推薦看下這篇博客,之前是我總結的如何用 windows 定時執行 Python 文件。


https://blog.csdn.net/s740556472/article/details/78239204​blog.csdn.net


Mac / Linux 系統:

瞭解 Linux 系統的同學,一定知道有個自帶的系統工具,叫 crontab。

使用方法,兩個。

  1. 編輯 crontab :
<code>crontab -e/<code>


5分鐘擼了個小小爬蟲....


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


5分鐘擼了個小小爬蟲....


<code>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/<code>

第一段,是cron特有的時間配置表達式,可以看下圖的簡介,順便給大家一個網址,可以在線查看其表達式的含義。而我腳本中寫的則是每天十點整執行 Python。


5分鐘擼了個小小爬蟲....


工具網址:

crontab執行時間計算​tool.lu

5分鐘擼了個小小爬蟲....

寫完 cron 表達式,後面跟的其實就是 python xxx.py 這樣的命令,只不過,在 cron 中一定要寫絕對路徑,否則不生效。

再執行 python 命令的基礎上,我還追加了 > xxx.log 這樣,意思是將 python 腳本的打印內容輸出到一個指定目錄的 log 文件裡。

2.查看定時任務 crontab:

<code>crontab -l/<code>


5分鐘擼了個小小爬蟲....


cron -l 則是查看定時任務列表內容的,可以看到有多少任務配置了。如果有多個定時腳本,則可以回車換行繼續添加即可。

每日自動抓取,導入圖片,換背景即可。


5分鐘擼了個小小爬蟲....


總結

嗯,這就是本次的 5 分鐘擼一個小爬蟲系列!

本篇介紹的定時工具,其實用途很大,因為基於系統層面,所以不依賴於腳本,只要你電腦開著,就可以隨心所欲的觸發你寫的腳本,而不依賴你腳本本身使用代碼的定時任務!

想看完整代碼的同學,可以公號後臺回覆 bing ,即可獲得。當然也可點擊下方地址:

https://github.com/unlimitbladeworks/python-tools/blob/master/spider/bing_picture/crawl_bing.py​github.com



分享到:


相關文章: