有哪些足不出戶,能用十天左右時間掌握的新技能?

get新技能,學習寫爬蟲?!


有哪些足不出戶,能用十天左右時間掌握的新技能?


1、為啥學爬蟲?

看到一個帖子,有人用python爬蟲在京東搶口罩,實現實時監測、實時搶購。

可以說很調皮了~

這是爬蟲在電商領域的一個小應用,除此之外你還能使用爬蟲進行:商品抓取、價格監控、評論抓取、競品分析、動態定價等等。

其他領域,你可以使用爬蟲做:房源監控分析、網絡輿情監測、精準客戶獲取、新聞資訊篩選、地信數據抓取、金融股票分析等等。

這些對於從事相關行業的分析人員還是很有學習意義的。

當然你還可以用爬蟲搞一下騷操作:知乎妹子高清圖片、言情小說、b站學習視頻、豆瓣電影書籍、抖音美女視頻......這些都可以爬下來收藏。

有哪些足不出戶,能用十天左右時間掌握的新技能?


之前一直很火的用python登錄12306搶票,也是爬蟲的傑作,不過現在越來越難了,各種反爬設置。大家有興趣可以去github

學爬蟲當然離不開python,所以這10天你還能get python編程,當今最火的AI編程語言。

當然你也可以用集成好的第三方軟件來爬,像八爪魚、后羿之類的,但我還是建議用python來寫爬蟲,能學到更多東西。

2、什麼是爬蟲?

爬蟲是一個形象的叫法,網絡爬蟲其實是網絡數據採集,針對性地用代碼實現網絡上各種數據(文字、圖片、視頻)的抓取。我們熟知的谷歌、百度等搜索引擎,也是使用的爬蟲技術。

通俗點說,爬蟲就像是一個穿梭於網絡世界的智能蜘蛛,你給它一個網址(url),然後設定規則,它就能突破重重險阻,把你想要的數據抓取下來,然後保存。

來源網絡,圖侵刪

能實現爬蟲的語言有很多,像Java、PHP、Python、C#...都可以用各種方式達到你的要求,那為什麼要用python呢?

人生苦短,python當歌!

python是一門高級編程語言,語法簡介,十分適合初學者。因此擁有了超級強大的開發社區,搗鼓出各種神奇的第三方庫,比如requests、beautifulsoup、scrapy、xpath、selenium等,都是爬蟲界的利器。

當然網絡爬蟲有利有弊,你可以爬人家的數據,但也要承擔可能存在的法律風險。慎重!

3、python爬蟲有些學習資源?

本來想先簡單介紹一下如何學習python爬蟲,但還是先把學習資源講一講,畢竟好多資源控 ̄□ ̄

對於小白來說,首先是學習python語法。

python學習家族有三個派別:視頻派、教程派、書籍派。

喜歡看視頻的就去b站吧,python視頻教學相當豐富,選擇播放量前幾名的系統學習下,聽說小甲魚的就還不錯。

當然有錢的你,可以選擇一些網上課程,像騰訊課堂、網易雲課堂裡面的課。

不要問為什麼,花錢買心安。比如我猜大方的你,會打賞這篇回答[hah

教程派的選擇很多了,像菜鳥教程、w3cschool、廖雪峰、python官檔...

推薦大家先看菜鳥教程、再看廖雪峰,官檔隨時查詢。

菜鳥教程 python3

廖雪峰 python教程

再推薦幾個可能會用到的python學習資源:

Python簡明教程(Python3)

Python3.7.4官方中文文檔

Python標準庫中文版

廖雪峰 Python 3 中文教程

Python 3.3 官方教程中文版

Python3 Cookbook 中文版

笨辦法學 Python (PDFEPUB)

《Think Python 2e》最新版中文

Python 核心編程 第二版 中文

菜鳥教程 Python3基礎

W3cschool Python3基礎

Python最佳實踐指南

Python 精要教程

Python進階 中文版

中文 Python 筆記

莫煩python教程

The Hitchhiker's Guide to Python

草根學 Python

Kaggle Python基礎學習(英文)

李笑來-自學是門手藝-python教程

對於書籍派來說,買一本紮實的python語法書,確實是必須的。

我之前用過的像《python編程 從入門到實踐》、《笨方法學python3》,都是適合初學者看的。

爬蟲的學習資源也非常多。

像崔慶才大佬的網站、b站視頻、官方文檔、爬蟲教材等,下面給大家參考:

awesome-spider 爬蟲集合

python模擬登陸&爬蟲

Python爬蟲代理IP池(proxy pool)

Python入門網絡爬蟲之精華版

Python3網絡爬蟲實戰

有趣的Python爬蟲和Python數據分析小項目

Python入門爬蟲

Requests 英文文檔

Requests 中文文檔

Scrapy 英文文檔

Scrapy 中文文檔

Pyspider 英文文檔

BeautifulSoup中文文檔

BeautifulSoup英文文檔

Xpath教程

崔慶才網站

還有一本python爬蟲書也是很不錯的,適合入門。

4、如何入門python爬蟲?

終於講到入門實操了,之前我寫過一個爬蟲入門回答,這裡搬運過來。

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

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

熟悉python編程

瞭解HTML

瞭解網絡爬蟲的基本原理

學習使用python爬蟲庫

一、你應該知道什麼是爬蟲?

網絡爬蟲,其實叫作網絡數據採集更容易理解。

就是通過編程向網絡服務器請求數據(HTML表單),然後解析HTML,提取出自己想要的數據。

歸納為四大步:

根據url獲取HTML數據

解析HTML,獲取目標信息

存儲數據

重複第一步

這會涉及到數據庫、網絡服務器、HTTP協議、HTML、數據科學、網絡安全、圖像處理等非常多的內容。但對於初學者而言,並不需要掌握這麼多。

二、python要學習到什麼程度

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

編程語言基礎語法無非是數據類型、數據結構、運算符、邏輯結構、函數、文件IO、錯誤處理這些,學起來會顯枯燥但並不難。

剛開始入門爬蟲,你甚至不需要去學習python的類、多線程、模塊之類的略難內容。找一個面向初學者的教材或者網絡教程,花個十幾天功夫,就能對python基礎有個三四分的認識了,這時候你可以玩玩爬蟲嘍!

當然,前提是你必須在這十幾天裡認真敲代碼,反覆咀嚼語法邏輯,比如列表、字典、字符串、if語句、for循環等最核心的東西都得捻熟於心、於手。

教材方面比較多選擇,我個人是比較推薦python官方文檔以及python簡明教程,前者比較系統豐富、後者會更簡練。

三、為什麼要懂HTML

前面說到過爬蟲要爬取的數據藏在網頁裡面的HTML裡面的數據,有點繞哈!

維基百科是這樣解釋HTML的

超文本標記語言(英語:HyperTextMarkupLanguage,簡稱:HTML)是一種用於創建網頁的標準標記語言。HTML是一種基礎技術,常與CSS、JavaScript一起被眾多網站用於設計網頁、網頁應用程序以及移動應用程序的用戶界面[3]。網頁瀏覽器可以讀取HTML文件,並將其渲染成可視化網頁。HTML描述了一個網站的結構語義隨著線索的呈現,使之成為一種標記語言而非編程語言。

總結一下,HTML是一種用於創建網頁的標記語言,裡面嵌入了文本、圖像等數據,可以被瀏覽器讀取,並渲染成我們看到的網頁樣子。

所以我們才會從先爬取HTML,再 解析數據,因為數據藏在HTML裡。

學習HTML並不難,它並不是編程語言,你只需要熟悉它的標記規則,這裡大致講一下。

HTML標記包含標籤(及其屬性)、基於字符的數據類型、字符引用和實體引用等幾個關鍵部分。

HTML標籤是最常見的,通常成對出現,比如

這些成對出現的標籤中,第一個標籤是開始標籤,第二個標籤是結束標籤。兩個標籤之間為元素的內容(文本、圖像等),有些標籤沒有內容,為空元素,如

以下是一個經典的Hello World程序的例子:

<title>This is a title/<title>

Hello world!

HTML文檔由嵌套的HTML元素構成。它們用HTML標籤表示,包含於尖括號中,如

[56]

在一般情況下,一個元素由一對標籤表示:“開始標籤”

與“結束標籤”

。元素如果含有文本內容,就被放置在這些標籤之間。

四、瞭解python網絡爬蟲的基本原理

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

發送GET請求,獲取HTML

解析HTML,獲取數據

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

五、用python庫爬取百度首頁標題和圖片

首先,發送HTML數據請求可以使用python內置庫urllib,該庫有一個urlopen函數,可以根據url獲取HTML文件,這裡嘗試獲取百度首頁“https://www.baidu.com/”的HTML內容

# 導入urllib庫的urlopen函數

from urllib.request import urlopen

# 發出請求,獲取html

html = urlopen("https://www.baidu.com/")

# 獲取的html內容是字節,將其轉化為字符串

html_text = bytes.decode(html.read())

# 打印html內容

print(html_text)

看看效果:

輸出html內容部分截取

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

在谷歌瀏覽器中查看HTML

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

獲取了HTML之後,接下就要解析HTML了,因為你想要的文本、圖片、視頻都藏在HTML裡,你需要通過某種手段提取需要的數據。

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

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

pip install bs4

BeautifulSoup會將HTML內容轉換成結構化內容,你只要從結構化標籤裡面提取數據就OK了:

比如,我想獲取百度首頁的標題“百度一下,我就知道”,怎麼辦呢?

這個標題是被兩個標籤套住的,一個是一級標籤

,另一個是二級標籤<title><title>,所以只要從標籤中取出信息就可以了

# 導入urlopen函數

from urllib.request import urlopen

# 導入BeautifulSoup

from bs4 import BeautifulSoup as bf

# 請求獲取HTML

html = urlopen("https://www.baidu.com/")

# 用BeautifulSoup解析html

obj = bf(html.read(),'html.parser')

# 從標籤head、title裡提取標題

title = obj.head.title

# 打印標題

print(title)

看看結果:

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

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

第一步先獲取該網頁所有圖片標籤和url,這個可以使用BeautifulSoup的findAll方法,它可以提取包含在標籤裡的信息。

一般來說,HTML裡所有圖片信息會在“img”標籤裡,所以我們通過findAll("img")就可以獲取到所有圖片的信息了。

# 導入urlopen

from urllib.request import urlopen

# 導入BeautifulSoup

from bs4 import BeautifulSoup as bf

# 請求獲取HTML

html = urlopen("https://www.baidu.com/")

# 用BeautifulSoup解析html

obj = bf(html.read(),'html.parser')

# 從標籤head、title裡提取標題

title = obj.head.title

# 使用find_all函數獲取所有圖片的信息

pic_info = obj.find_all('img')

# 分別打印每個圖片的信息

for i in pic_info:

print(i)

看看結果:

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

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

[, 到百度首頁]

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

# 導入urlopen

from urllib.request import urlopen

# 導入BeautifulSoup

from bs4 import BeautifulSoup as bf

# 請求獲取HTML

html = urlopen("https://www.baidu.com/")

# 用BeautifulSoup解析html

obj = bf(html.read(),'html.parser')

# 從標籤head、title裡提取標題

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)

結果:

獲取地址後,就可以用urllib.urlretrieve函數下載logo圖片了

# 導入urlopen

from urllib.request import urlopen

# 導入BeautifulSoup

from bs4 import BeautifulSoup as bf

# 導入urlretrieve函數,用於下載圖片

from urllib.request import urlretrieve

# 請求獲取HTML

html = urlopen("https://www.baidu.com/")

# 用BeautifulSoup解析html

obj = bf(html.read(),'html.parser')

# 從標籤head、title裡提取標題

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'

六、結語

本文用爬取百度首頁標題和logo圖片的案例,講解了python爬蟲的基本原理以及相關python庫的使用,這是比較初級的爬蟲知識,還有很多優秀的python爬蟲庫和框架等待後續去學習。

當然,掌握本文講的知識點,你就已經入門python爬蟲了。加油吧,少年!

5、趕緊行動吧!

疫情特殊時期,很多人在家閒著,趁這個機會學習python爬蟲,上班後也能繼續學習


"/<title>/<title>


分享到:


相關文章: