最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊

小白如何入門 Python 爬蟲?

2023-02-24 16:01 作者:編程小宇e  | 我要投稿


小白如何入門 Python 爬蟲?


本文針對初學(xué)者,我會(huì)用最簡單的案例告訴你如何入門python爬蟲!

想要入門Python 爬蟲首先需要解決四個(gè)問題

  • 熟悉python編程

  • 了解HTML

  • 了解網(wǎng)絡(luò)爬蟲的基本原理

  • 學(xué)習(xí)使用python爬蟲庫

一、你應(yīng)該知道什么是爬蟲?

網(wǎng)絡(luò)爬蟲,其實(shí)叫作網(wǎng)絡(luò)數(shù)據(jù)采集更容易理解。

就是通過編程向網(wǎng)絡(luò)服務(wù)器請求數(shù)據(jù)(HTML表單),然后解析HTML,提取出自己想要的數(shù)據(jù)。

歸納為四大步:

  1. 根據(jù)url獲取HTML數(shù)據(jù)

  2. 解析HTML,獲取目標(biāo)信息

  3. 存儲數(shù)據(jù)

  4. 重復(fù)第一步

這會(huì)涉及到數(shù)據(jù)庫、網(wǎng)絡(luò)服務(wù)器、HTTP協(xié)議、HTML、數(shù)據(jù)科學(xué)、網(wǎng)絡(luò)安全、圖像處理等非常多的內(nèi)容。但對于初學(xué)者而言,并不需要掌握這么多。

二、python要學(xué)習(xí)到什么程度

如果你不懂python,那么需要先學(xué)習(xí)python這門非常easy的語言(相對其它語言而言)。

編程語言基礎(chǔ)語法無非是數(shù)據(jù)類型、數(shù)據(jù)結(jié)構(gòu)、運(yùn)算符、邏輯結(jié)構(gòu)、函數(shù)、文件IO、錯(cuò)誤處理這些,學(xué)起來會(huì)顯枯燥但并不難。

剛開始入門爬蟲,你甚至不需要去學(xué)習(xí)python的類、多線程、模塊之類的略難內(nèi)容。找一個(gè)面向初學(xué)者的教材或者網(wǎng)絡(luò)教程,花個(gè)十幾天功夫,就能對python基礎(chǔ)有個(gè)三四分的認(rèn)識了,這時(shí)候你可以玩玩爬蟲嘍!

先說下python入門,實(shí)在是太容易了,因?yàn)檎Z法簡單,思維與人類的思維很相近。入門的時(shí)候,別整天想著看很多資料,網(wǎng)上各種找,最后都留在了收藏夾吃灰。其實(shí)對于剛接觸編程的小白而言,最容易卡在安裝Python環(huán)境和實(shí)操代碼這一步。建議一開始先試試一些學(xué)習(xí)網(wǎng)站的免費(fèi)課程,大概了解下Python的基礎(chǔ)知識,打好扎實(shí)的基礎(chǔ)后再上手學(xué)爬蟲。

當(dāng)然,前提是你必須在這十幾天里認(rèn)真敲代碼,反復(fù)咀嚼語法邏輯,比如列表、字典、字符串、if語句、for循環(huán)等最核心的東西都得捻熟于心、于手。

教材方面比較多選擇,我個(gè)人是比較推薦python官方文檔以及python簡明教程,前者比較系統(tǒng)豐富、后者會(huì)更簡練。

三、為什么要懂HTML

前面說到過爬蟲要爬取的數(shù)據(jù)藏在網(wǎng)頁里面的HTML里面的數(shù)據(jù),有點(diǎn)繞哈!

維基百科是這樣解釋HTML的

超文本標(biāo)記語言(英語:HyperTextMarkupLanguage,簡稱:HTML)是一種用于創(chuàng)建網(wǎng)頁的標(biāo)準(zhǔn)標(biāo)記語言。HTML是一種基礎(chǔ)技術(shù),常與CSS、JavaScript一起被眾多網(wǎng)站用于設(shè)計(jì)網(wǎng)頁、網(wǎng)頁應(yīng)用程序以及移動(dòng)應(yīng)用程序的用戶界面[3]。網(wǎng)頁瀏覽器可以讀取HTML文件,并將其渲染成可視化網(wǎng)頁。HTML描述了一個(gè)網(wǎng)站的結(jié)構(gòu)語義隨著線索的呈現(xiàn),使之成為一種標(biāo)記語言而非編程語言。

總結(jié)一下,HTML是一種用于創(chuàng)建網(wǎng)頁的標(biāo)記語言,里面嵌入了文本、圖像等數(shù)據(jù),可以被瀏覽器讀取,并渲染成我們看到的網(wǎng)頁樣子。

所以我們才會(huì)從先爬取HTML,再 解析數(shù)據(jù),因?yàn)閿?shù)據(jù)藏在HTML里。

學(xué)習(xí)HTML并不難,它并不是編程語言,你只需要熟悉它的標(biāo)記規(guī)則,這里大致講一下。

HTML標(biāo)記包含標(biāo)簽(及其屬性)、基于字符的數(shù)據(jù)類型、字符引用和實(shí)體引用等幾個(gè)關(guān)鍵部分。

HTML標(biāo)簽是最常見的,通常成對出現(xiàn),比如<h1></h1>。

這些成對出現(xiàn)的標(biāo)簽中,第一個(gè)標(biāo)簽是開始標(biāo)簽,第二個(gè)標(biāo)簽是結(jié)束標(biāo)簽。兩個(gè)標(biāo)簽之間為元素的內(nèi)容(文本、圖像等),有些標(biāo)簽沒有內(nèi)容,為空元素,如<img>

以下是一個(gè)經(jīng)典的Hello World程序的例子:

<!DOCTYPE html> <html> ?<head> ? ?<title>This is a title</title> ?</head> ?<body> ? ?<p>Hello world!</p> ?</body> </html>

HTML文檔由嵌套的HTML元素構(gòu)成。它們用HTML標(biāo)簽表示,包含于尖括號中,如<p>[56]

在一般情況下,一個(gè)元素由一對標(biāo)簽表示:“開始標(biāo)簽”<p>與“結(jié)束標(biāo)簽”</p>。元素如果含有文本內(nèi)容,就被放置在這些標(biāo)簽之間。

四、了解python網(wǎng)絡(luò)爬蟲的基本原理

在編寫python爬蟲程序時(shí),只需要做以下兩件事:

  • 發(fā)送GET請求,獲取HTML

  • 解析HTML,獲取數(shù)據(jù)

這兩件事,python都有相應(yīng)的庫幫你去做,你只需要知道如何去用它們就可以了。

五、用python庫爬取百度首頁標(biāo)題和圖片

首先,發(fā)送HTML數(shù)據(jù)請求可以使用python內(nèi)置庫urllib,該庫有一個(gè)urlopen函數(shù),可以根據(jù)url獲取HTML文件,這里嘗試獲取百度首頁“baidu.com/”的HTML內(nèi)容

# 導(dǎo)入urllib庫的urlopen函數(shù) from urllib.request import urlopen # 發(fā)出請求,獲取html html = urlopen("https://www.baidu.com/") # 獲取的html內(nèi)容是字節(jié),將其轉(zhuǎn)化為字符串 html_text = bytes.decode(html.read()) # 打印html內(nèi)容 print(html_text)

看看效果:

我們看一下真正百度首頁html是什么樣的,如果你用的是谷歌瀏覽器,在百度主頁打開設(shè)置>更多工具>開發(fā)者工具,點(diǎn)擊element,就可以看到了:

對比一下你就會(huì)知道,剛才通過python程序獲取到的HTML和網(wǎng)頁中的一樣!

獲取了HTML之后,接下就要解析HTML了,因?yàn)槟阆胍奈谋?、圖片、視頻都藏在HTML里,你需要通過某種手段提取需要的數(shù)據(jù)。

python同樣提供了非常多且強(qiáng)大的庫來幫助你解析HTML,這里以著名的python庫BeautifulSoup為工具來解析上面已經(jīng)獲取的HTML。

BeautifulSoup是第三方庫,需要安裝使用。在命令行用pip安裝就可以了:

pip install bs4

BeautifulSoup會(huì)將HTML內(nèi)容轉(zhuǎn)換成結(jié)構(gòu)化內(nèi)容,你只要從結(jié)構(gòu)化標(biāo)簽里面提取數(shù)據(jù)就OK了:

比如,我想獲取百度首頁的標(biāo)題“百度一下,我就知道”,怎么辦呢?

這個(gè)標(biāo)題是被兩個(gè)標(biāo)簽套住的,一個(gè)是一級標(biāo)簽<head><head>,另一個(gè)是二級標(biāo)簽<title><title>,所以只要從標(biāo)簽中取出信息就可以了


# 導(dǎo)入urlopen函數(shù) from urllib.request import urlopen # 導(dǎo)入BeautifulSoup from bs4 import BeautifulSoup as bf # 請求獲取HTML html = urlopen("https://www.baidu.com/") # 用BeautifulSoup解析html obj = bf(html.read(),'html.parser') # 從標(biāo)簽head、title里提取標(biāo)題 title = obj.head.title # 打印標(biāo)題 print(title)

看看結(jié)果:

這樣就搞定了,成功提取出百度首頁的標(biāo)題。

如果我想要下載百度首頁logo圖片呢?

第一步先獲取該網(wǎng)頁所有圖片標(biāo)簽和url,這個(gè)可以使用BeautifulSoup的findAll方法,它可以提取包含在標(biāo)簽里的信息。

一般來說,HTML里所有圖片信息會(huì)在“img”標(biāo)簽里,所以我們通過findAll("img")就可以獲取到所有圖片的信息了。

# 導(dǎo)入urlopen from urllib.request import urlopen # 導(dǎo)入BeautifulSoup from bs4 import BeautifulSoup as bf # 請求獲取HTML html = urlopen("https://www.baidu.com/") # 用BeautifulSoup解析html obj = bf(html.read(),'html.parser') # 從標(biāo)簽head、title里提取標(biāo)題 title = obj.head.title # 使用find_all函數(shù)獲取所有圖片的信息 pic_info = obj.find_all('img') # 分別打印每個(gè)圖片的信息 for i in pic_info: ? ?print(i)

看看結(jié)果:

打印出了所有圖片的屬性,包括class(元素類名)、src(鏈接地址)、長寬高等。

其中有百度首頁logo的圖片,該圖片的class(元素類名)是index-logo-src。

[<img class="index-logo-src" height="129" hidefocus="true" src="//www.baidu.com/img/bd_logo1.png" usemap="#mp" width="270"/>, <img alt="到百度首頁" class="index-logo-src" src="//www.baidu.com/img/baidu_jgylogo3.gif" title="到百度首頁"/>]

可以看到圖片的鏈接地址在src這個(gè)屬性里,我們要獲取圖片鏈接地址:

# 導(dǎo)入urlopen from urllib.request import urlopen # 導(dǎo)入BeautifulSoup from bs4 import BeautifulSoup as bf # 請求獲取HTML html = urlopen("https://www.baidu.com/") # 用BeautifulSoup解析html obj = bf(html.read(),'html.parser') # 從標(biāo)簽head、title里提取標(biāo)題 title = obj.head.title # 只提取logo圖片的信息 logo_pic_info = obj.find_all('img',class_="index-logo-src") # 提取logo圖片的鏈接 logo_url = "https:"+logo_pic_info[0]['src'] # 打印鏈接 print(logo_url)

結(jié)果:

獲取地址后,就可以用urllib.urlretrieve函數(shù)下載logo圖片了

# 導(dǎo)入urlopen from urllib.request import urlopen # 導(dǎo)入BeautifulSoup from bs4 import BeautifulSoup as bf # 導(dǎo)入urlretrieve函數(shù),用于下載圖片 from urllib.request import urlretrieve # 請求獲取HTML html = urlopen("https://www.baidu.com/") # 用BeautifulSoup解析html obj = bf(html.read(),'html.parser') # 從標(biāo)簽head、title里提取標(biāo)題 title = obj.head.title # 只提取logo圖片的信息 logo_pic_info = obj.find_all('img',class_="index-logo-src") # 提取logo圖片的鏈接 logo_url = "https:"+logo_pic_info[0]['src'] # 使用urlretrieve下載圖片 urlretrieve(logo_url, 'logo.png')

最終圖片保存在'logo.png'

六、結(jié)語

本文用爬取百度首頁標(biāo)題和logo圖片的案例,講解了python爬蟲的基本原理以及相關(guān)python庫的使用,這是比較初級的爬蟲知識,還有很多優(yōu)秀的python爬蟲庫和框架等待后續(xù)去學(xué)習(xí)。

房子一層一層蓋,知識一點(diǎn)一點(diǎn)學(xué)。剛接觸Python的同學(xué)還是要打好基礎(chǔ),自己上手實(shí)操↓ 話不多說,上干貨!最近發(fā)現(xiàn)了一個(gè)接近免費(fèi)的Python課程,在裙上教學(xué)基礎(chǔ)知識+實(shí)操代碼,比較適合小白學(xué)習(xí),比找資料自學(xué)高效多了。最后分享給你們,在評論區(qū)下留言“拿來吧“就可以領(lǐng)取!


小白如何入門 Python 爬蟲?的評論 (共 條)

分享到微博請遵守國家法律
屏山县| 左云县| 牙克石市| 江口县| 北海市| 连州市| 中牟县| 达州市| 务川| 富源县| 恩平市| 南昌县| 文成县| 南宫市| 屯昌县| 安图县| 镇康县| 新建县| 常德市| 图们市| 八宿县| 伊川县| 四子王旗| 佛学| 田林县| 师宗县| 巴彦淖尔市| 萨嘎县| 黔南| 新巴尔虎左旗| 教育| 明水县| 曲沃县| 江油市| 昔阳县| 扶沟县| 邛崃市| 江陵县| 沽源县| 区。| 莱州市|