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)
好了,上面就是完整的程式碼內容,我們試著執行一次:
結果完全沒問題,看資料夾裡面的圖片也儲存下來了:
隨便開啟一張,都是非常精美的:
有沒有發現圖片非常的漂亮,隨便找一張設定成電腦桌面看一下效果吧:
可以看到效果非常的精美。