1. 程式人生 > 實用技巧 >Python抓取必應搜尋背景圖片

Python抓取必應搜尋背景圖片

本文的文字及圖片來源於網路,僅供學習、交流使用,不具有任何商業用途,如有問題請及時聯絡我們以作處理。

以下文章來源於編碼珠璣 ,作者劉亞曦

Python爬蟲、資料分析、網站開發等案例教程視訊免費線上觀看

https://space.bilibili.com/523606542

想必大多數小夥伴們已經對百度搜索的廣告推薦機制深痛惡絕了,但凡哪怕涉及到一點點商業內容的搜尋,出來的結果幾乎全是廣告。其實,除了谷歌搜尋外,還有一個小眾的搜尋引擎,效果也並不比百度差多少,關鍵是搜尋結果幾乎沒有廣告,他就是微軟的親兒子,必應搜尋。

每次開啟必應搜尋,我們都會看到一張精美的背景圖片,而且每天都更新。之前微軟還提供了每張圖片的下載地址,後來就直接取消了。但是如果我們能夠獲取這些背景圖片並把它們設為電腦桌布,豈不是一件很有趣的事情呢,那麼如何才能獲取到這些照片呢,今天我手把手教你寫個Python指令碼來抓取必應搜尋的背景圖片。

首先,我們安裝IDE,這裡我選擇Python最流行的PyCharm,大家可以到官網上下載:

https://www.jetbrains.com/pycharm/download/#section=windows

安裝方法非常簡單,直接下一步就行。

安裝完成後,開啟IDE,我們建立一個Python的專案

完成後,還要事先安裝幾個庫,方便我們後面寫程式碼使用,分別是:

request

BeautifulSoup4

lxml

安裝方法很簡單,我們點選編譯器左上角的File->Settings彈出對話方塊:

我們雙擊上圖中的pip,在彈出的對話方塊裡面分別搜尋上面羅列的三個庫名字,然後點選左下角的InstallPackage即可完成安裝:

完成以後,我們開始寫程式碼:

首先我們引入四個我們需要的包程式碼:

if __name__=='__main__':
    for i in range(8):
        url = 'https://cn.bing.com/HPImageArchive.aspx?idx={}&n=1'.format(i)
        html = get_page(url)
        soup = BeautifulSoup(html, 'lxml')
        text = soup.find(name='url').string
        img_url = 'https://cn.bing.com' + text
        img_name = re.match('^/th\?id=(.*?)&', text).group(1)
download(img_url,'填你自己想儲存的檔案路徑c:/..',img_name)

然後我們定義一個get_page的函式來獲取request請求得到的網頁內容,不過為了偽裝成瀏覽器訪問,我們這裡要更改一下User-Agent欄位:

def get_page(url):
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36'
}
    response = requests.get(url, headers=headers)
ifresponse.status_code==200:#響應狀態碼錶示伺服器對請求的響應結果。200代表伺服器響應成功,403代表禁止訪問,404代表頁面未找到
returnresponse.text

再來定義一個下載圖片的函式download,傳入的引數包含圖片的url路徑,你自己定義的資料夾路徑還有圖片的名稱:

def download(url, path, fname):
    response = requests.get(url)
    if response:
        with open(os.path.join(path, fname), 'wb') as f:
            f.write(response.content)
            print('successful: {} .'.format(fname))
    else:
        print('faild: {}.'.format(fname))

好了,上面兩個主要的函式定義好了以後,我們再定義main函式,來不斷呼叫他們,注意download函式的路徑要填寫你自己的資料夾路徑。由於必應官方只儲存了八張原圖,所以我們就簡單粗暴地只迴圈8次即可,程式碼如下:

if __name__=='__main__':
    for i in range(8):
        url = 'https://cn.bing.com/HPImageArchive.aspx?idx={}&n=1'.format(i)
        html = get_page(url)
        soup = BeautifulSoup(html, 'lxml')
        text = soup.find(name='url').string
        img_url = 'https://cn.bing.com' + text
        img_name = re.match('^/th\?id=(.*?)&', text).group(1)
download(img_url,'填你自己想儲存的檔案路徑c:/..',img_name)

好了,上面就是完整的程式碼內容,我們試著執行一次:

結果完全沒問題,看資料夾裡面的圖片也儲存下來了:

隨便開啟一張,都是非常精美的:

有沒有發現圖片非常的漂亮,隨便找一張設定成電腦桌面看一下效果吧:

可以看到效果非常的精美。