05網(wǎng)站網(wǎng)上哪里可以免費(fèi)打廣告
Python 網(wǎng)絡(luò)爬蟲入門:Spider man的第二課
- 寫在最前面
- 觀察目標(biāo)網(wǎng)站
- 代碼編寫
- 第二課總結(jié)
寫在最前面
有位粉絲希望學(xué)習(xí)網(wǎng)絡(luò)爬蟲的實(shí)戰(zhàn)技巧,想嘗試搭建自己的爬蟲環(huán)境,從網(wǎng)上抓取數(shù)據(jù)。
前面有寫一篇博客分享,但是內(nèi)容感覺太淺顯了
【一個(gè)超簡單的爬蟲demo】探索新浪網(wǎng):使用 Python 爬蟲獲取動(dòng)態(tài)網(wǎng)頁數(shù)據(jù)
本期邀請了擅長爬蟲的朋友@PoloWitty,來撰寫這篇博客。通過他的專業(yè)視角和實(shí)戰(zhàn)經(jīng)驗(yàn),一步步引導(dǎo)我們?nèi)腴T,成為一名數(shù)據(jù)探索的“Spider Man”。
【Python網(wǎng)絡(luò)爬蟲入門教程1】成為“Spider Man”的第一課:HTML、Request庫、Beautiful Soup庫
【Python網(wǎng)絡(luò)爬蟲入門教程2】成為“Spider Man”的第二課:觀察目標(biāo)網(wǎng)站、代碼編寫
【Python網(wǎng)絡(luò)爬蟲入門教程3】成為“Spider Man”的第三課:從requests到scrapy、爬取目標(biāo)網(wǎng)站
隨著互聯(lián)網(wǎng)數(shù)據(jù)的指數(shù)級增長,了解如何有效地提取這些信息變得越來越重要。無論是文本模型如ChatGPT,還是視覺模型如Stable Diffusion,它們的訓(xùn)練數(shù)據(jù)大多來源于互聯(lián)網(wǎng)的海量數(shù)據(jù)。在這個(gè)日新月異的大數(shù)據(jù)時(shí)代,爬蟲也算是其中不得不點(diǎn)的一項(xiàng)基礎(chǔ)技能樹了。
本系列文章將深入淺出地介紹Python網(wǎng)絡(luò)爬蟲的基礎(chǔ)知識和技術(shù),從 Requests 庫到 Scrapy 框架的 入門級
使用,為你開啟python網(wǎng)絡(luò)爬蟲的大門,成為spider man的一員,并最終以ScrapeMe網(wǎng)站作為目標(biāo)示例,爬取下網(wǎng)站上的可愛又有趣的寶可夢照片。
在開始之前,還要啰嗦幾句疊個(gè)甲,網(wǎng)絡(luò)爬蟲雖然強(qiáng)大,但在使用時(shí)必須遵守法律法規(guī)和網(wǎng)站的爬蟲協(xié)議。不違法爬取數(shù)據(jù),遵守相關(guān)法律法規(guī)哦~
這是本系列的第二篇文章,將會以ScrapeMe網(wǎng)站作為示例,展示如何使用第一課中學(xué)到的基礎(chǔ)知識來對網(wǎng)站上的寶可夢圖片進(jìn)行爬取。
觀察目標(biāo)網(wǎng)站
首先,我們需要先對我們需要爬取的目標(biāo)網(wǎng)站及目標(biāo)內(nèi)容進(jìn)行一番觀察。
直接點(diǎn)進(jìn)目標(biāo)網(wǎng)站,我們可以看到如下內(nèi)容:
我們想要爬取的目標(biāo)圖像就處于中間位置。
再觀察一下如何獲取到不同page上的所有圖片,點(diǎn)擊不同page并觀察對應(yīng)的鏈接地址可以發(fā)現(xiàn),通過在請求的地址鏈接中加入page參數(shù),便可以訪問不同的鏈接了。比如https://scrapeme.live/shop/page/2/?orderby=popularity
,就是第二個(gè)page對應(yīng)的鏈接地址,通過不斷更換page后面的參數(shù),便可以訪問到不同的page了。
代碼編寫
通過上面的觀察分析,我們的爬蟲代碼思路便很清晰了:
- 通過改變
url=f'https://scrapeme.live/shop/page/{pageNum}/?orderby=popularity'
中的pageNum
參數(shù),獲取到不同的page- 獲取當(dāng)前page下所有圖片的鏈接
- 利用requests去請求相應(yīng)的鏈接并保存至本地文件夾中
通過上面的偽代碼,我們便可以寫出相應(yīng)的爬蟲程序了:
import requests
from bs4 import BeautifulSoupdef download_from_url(url:str):'''利用requests庫,從相應(yīng)的圖片鏈接中下載對應(yīng)的圖片結(jié)果會保存到results文件夾中'''filename = url.split('/')[-1]with open(f'./results/{filename}','wb') as fp:fig_response = requests.get(url)fp.write(fig_response.content)if __name__=='__main__':for pageNum in range(1,49):url=f'https://scrapeme.live/shop/page/{pageNum}/?orderby=popularity'response = requests.get(url)soup = BeautifulSoup(response.text, 'html.parser')# 找到所有的圖片元素links = soup.find_all('img')for link in links:# 找到圖片對應(yīng)的鏈接fig_link = link.get('src')# 根據(jù)鏈接下載相應(yīng)的圖片download_from_url(fig_link)
然后我們可以看看我們爬取下來的寶可夢圖片:
怎么樣,是不是又優(yōu)雅又簡單hhh,輕輕松松拿捏住了🤏
第二課總結(jié)
通過本節(jié)課程,你應(yīng)該已經(jīng)對如何使用requests庫和Beautiful Soup庫編寫爬蟲程序有了更加深入的認(rèn)識。恭喜你,你已經(jīng)能夠應(yīng)付大多數(shù)的爬蟲場景了,已經(jīng)基本入門了python 網(wǎng)絡(luò)爬蟲的世界φ(゜▽゜*)?
接下來,本系列課程的第三課,將講述本系列課程的提高內(nèi)容:利用scrapy庫以應(yīng)對更多更復(fù)雜的爬蟲場景。