用人話教你入門Python[簡單爬取網頁內容]

2021-03-02 會說人話的知識

溫馨提示:閱讀Cosmo的問題文章碰到括號請先跳過,讀完整句話再回頭看括號裡的內容

Cosmo認為要學好機器學習、數據挖掘的話四方面很重要:編程、理論知識、數學基礎、計算機科學基礎        

所以Cosmo不會一直講機器學習的理論知識,其他方面也會一起講,數據科學領域最受歡迎的程式語言應該數Python和R語言了

不要問我哪個比較好,也希望大家不要去投身到程式語言聖戰中爭論哪個好一點,哪個更好對現在的我們來說並不重要,我們只要把兩個都學了,哪個更適合你自然心知肚明,由於Cosmo對python的個人喜好,所以我們這裡講python~

這篇文章會按:安裝Python->利用python抓取網頁內容來講(爬網頁的意思就是利用「網絡爬蟲」,把你在瀏覽器能看到的東西,自動、批量地下載到電腦裡)

網絡爬蟲可以這樣形象地理解:把網際網路想像成一張很大的網,網上的每一個節點都代表一個網頁,如果我開了家叫Goodle的公司(聽這山寨名字就知道幹的事情和Google差不多),那麼我就需要把網際網路上所有網頁裝進我口袋,這樣別人向我查詢才可以把網頁找給他呀。但是我發現網頁太多,收集起來好累……於是我做了一隻叫「網絡爬蟲」的蜘蛛,把它丟在網際網路上,告訴它,見到新的網站你就吃進肚子裡,重複的網站就不要吃了,吃完一個網站就再吃跟這個網站有連結的新網站……直到你把網際網路所有不重複的網站吃掉就跑回來吐給我哦

我們這裡不需要像Goodle公司那樣爬取很多網頁,先學爬一個網頁裡的部分內容就好了


我們說好了是說人話的知識嘛,講那些會感覺枯燥呀,Cosmo假設你知道一點點編程知識了(其實不知道也沒有很大障礙,想補基礎可以聽聽這課https://www.coursera.org/learn/hipython 那個老師也挺搞笑的)。編程最重要是覺得好玩,有了興趣你就會自己去學,比我教的快多了。

我會詳細地用人話講解每一個部分代表什麼意思的啦,快速學習需要Learning by doing嘛

Life is short,I use python   來來開始講python大法

首先我們不去官網下python,因為那個版本太純淨了,什麼不都不帶,對新手不太友好,這裡Cosmo推薦安裝Anaconda大禮包

只有最基礎的python我們是不能做很多事情的,python之所以那麼強大,是因為他有很多的模塊(Module),你可以理解為裝備,這些裝備是玩python的大神打造的,如果沒有他們,你是這樣的

安裝了這些包\模塊\庫之後,你就長這樣了

而Anaconda之所以被我叫做大禮包是因為數據科學需要的模塊它基本都自帶幫你裝好了,很多新手剛開始裝個模塊都被坑得痛不欲生

去這個網址

https://www.continuum.io/downloads#_windows

下載python2.7,這裡不介紹python2.7和3.5有什麼區別,反正我們用2.7的,安裝過程沒什麼技術含量只是等的比較久就跳過了

成功安裝後您將獲得精美禮品Jupter Notebook一份,Ipython一份,集成開發環境Spyder一份(不知道是什麼鬼不要緊,反正在你的開始菜單->所有程序->Anaconda裡獲得了很多神器)

至此python已經安裝完成啦~~感謝大家的的閱讀

如果你覺得Cosmo這篇文章有趣或者能讓你學到東西,我便十分的高興,希望你能動動小手把文章或公眾號介紹給你好朋友,這就是對我最大的支持啦!支持就是動力,就會繼續寫下去(好順口哈哈),如果你也想「講人話」給大家分享你的知識,非常歡迎聯繫我!


差點忘了……

今天我們要爬取的網頁是

http://www.ishadowsocks.com/

為什麼要爬這個網站呢?還記得Cosmo布置的小作業(去找找怎麼fan qiang)嗎?

心軟善良純真熱心的Cosmo還是擔心有些同學沒找到,看coursera之類的響應速度慢成狗,因此而放棄學習就不太好了,所以在下一次推送中會教大家上網的正確姿勢,而我們今天爬取的這個網站正是為下一次做準備的(Cosmo在下一盤很大的棋)

打開這個網站拉到最下面我們會看到


看到免費兩個字兩眼放光有沒有~看到密碼就像看到錢是不是,我們就爬取這些看起來很值錢的信息吧!

Cosmo建議大家使用Chrome瀏覽器(Google出品值得信賴,它的拓展程序就像剛剛說的可以穿裝備那麼強大),這時候點擊右鍵->查看網頁原始碼(其他瀏覽器也可以哦)

彈出一堆亂七八糟的東西看得眼都花了吧~所以我們不看,直接按鍵盤ctrl+F查找,輸入密碼作為關鍵字就直接跳轉到免費信息那裡了~


我們發現他們被一堆奇奇怪怪的代碼包圍了,不需要理解這些代碼的意思,那是編寫網頁用的代碼,我們現在關心的只是如何把這些有用的東西自動下載到我電腦裡

你說的很有道理,不過這裡只是為了說明爬蟲最簡單的流程啦,如果要爬取的東西很多,分布在很多網頁,複製起來就會哭的嘛,所以我們還是用python寫網頁爬蟲的形式來下載

首先按ctrl+R,然後輸入cmd,出來一個黑框框,在裡面輸入ipython或者python之後回車(或者你直接打開我們剛剛獲得的大禮包裡的Ipython

如果你的Anaconda安裝沒問題的話會是這樣的情景


接下來輸入import urllib2,這是引入(import)爬取網頁用的一個庫,比如我們要用python實現打開網頁,讀取網頁之類的操作,都需要用到裡面的函數

再輸入import re,re是regular expression的縮寫,中文是正則表達式,我們還是不要管中文名字好了,從「正則」這兩個字來理解我至今仍然無法獲得一種直觀認識。但是regular我們懂呀,就是經常的、規則的嘛~

所以regular expression大概就是通配符的意思(喜歡折騰電腦的同學應該知道)

通配符是一種特殊語句,主要有星號(*)和問號(?),用來模糊搜索文件。當查找文件夾時,可以使用它來代替一個或多個真正字符

比如我們突然忘記了《會說人話的知識》這個公眾號,只記得那個猥瑣搞笑的公眾號大概叫《會XXX的知識》,死都記不起來中間三個字是啥,那麼我們搜索的時候希望可以問電腦「那個不知道會幹嘛的知識那個公眾號麻煩幫我找一下」,有需求就會有人去開發,這就是通配符了,星號*可以代表所有不知道的東東,我們搜索就可以是《會*的知識》,醬紫就能找出我的公眾號啦

對正則表達式有個直觀了解後我們就可以開始做啦!

首先我們需要在python裡打開剛剛那個網址,輸入

web=urllib2.urlopen('http://www.ishadowsocks.com/')

urllib2就是我們說的爬網站用的庫啦,urllib2中的url我們可以理解為網址的意思,lib是library的意思,就是庫,2代表這個庫很2(開玩笑)

urlopen自然就是打開網址的意思啦~注意網址兩邊要用引號包住,單引號雙引號都可以,告訴python這是一個網址,而不是程序裡的一些變量

剛剛只是打開了一個網址而已,我們還看不到網站裡的東西


所以繼續輸入

neirong=web.read()

read()是用來讀取網頁的函數,這段代碼意思是讀取我們幫幫打開的web,把內容放在neirong裡

現在我們來看看剛剛讀取的內容是啥,輸入neirong回車就可以查看

這些都是什麼鬼……這哪裡是內容,根本就是鳥語好嗎?

我們需要讓它講人話!!

輸入jiangrenhua=neirong.decode('UTF-8')

(讀代碼一般應該從右向左讀)  neirong.decode意思是把剛剛內容裡的那些鳥語解碼,decode是解碼的意思,解碼我們可以理解為翻譯= =,後面的UTF-8就是這種鳥語的名字了,我們根本看不懂的那些話其實是名為UTF-8的這種語言(編碼)來的

翻譯成什麼呢?直接翻譯成中文?很遺憾不可以~如果把我們看不懂的那些東西叫做鳥不拉屎語,而我們看得懂的是中文,那麼python需要把鳥不拉屎語翻譯成一種通用語言英語(Unicode編碼),在輸出的時候再翻譯成中文,即翻譯兩次哦

也就是說我們這一步把鳥不拉屎語UTF-8翻譯成英文Unicode,存放在jiangrenhua(講人話)這個變量裡

這時候我們試試能不能看到網頁的內容了

輸入

print jiangrenhua

好開心~終於出現中文了,在這一步裡print是列印的意思,在列印jiangrenhua裡的內容的時候,python自動會把英文(Unicode)翻譯成中文(這取決於你電腦的中文編碼),所以我們不需要專門去把英文轉換成中文

但是這麼鬼死多東西,我們只想要剛剛那些免費的信息,用眼睛好難找啊……這時候就可以搬出我們的大殺器正則表達式(regular expression)啦~

回到網頁的原始碼我們可以看到,我們需要的信息被很多<h4>包圍著
        

所以我們只要用正則表達式把<h4>之間的東西搜索出來就好啦

RegularExpression='<h4>(.*)<\/h4>'

我們先把正則表達式寫好,等號右邊的意思是我們待會兒要匹配的內容是<h4>與</h4>之間的任意內容,為什麼任意內容用(.*)表示呢?括號只是告訴python這裡面是我想要的東西,而點.在python的正則表達式裡代表除換行符外任意一個字符(不懂換行符不要緊,這不是重點忽略它),星號*代表不只一個字符,因為前面那個點. 只能匹配一個字符,而我們想要的內容不止一個字符。

然後開始搜索,把搜索結果放在Valuable這個變量裡,因為我們覺得這些信息很有價值嘿嘿

Valuable=re.findall(RegularExpression,jiangrenhua)

以上代碼用中文來打:有價值的=正則表達式.找到所有(正則表達式,講人話),意思是在jiangrenhua那一大堆東西裡找出所有被<h4>和</h4>包住的東西,把這些東西放一個叫做有價值的列表裡

之後看看有價值的這個列表裡都放了什麼東西

len(Valuable)#看看Valuable裡面有多少個元素,發現有45個

for i in range(45):

    print Valuable[i]

寫了一個循環把Valuable的45個元素全部輸出來看看

我們發現只有前18行使我們想要的,所以我們還是輸出前18行就好了

for i in range(18):

    print Valuable[i]


但是我們發現很多奇奇怪怪的英文,我們並不想要這些,那麼可以利用re這個庫裡的sub函數去掉沒用的東西(其實到這一步我們目的已經達到了,只是覺得長得太醜)

先創建一個列表,等一下用來存放那些免費的信息的,輸入

Information=[]

再輸入(看圖片)



 valuable=re.sub('<.*?>','',Valuable[i])  這段代碼是把Valuable裡第i個元素中,所有被<>這兩個尖括號的包住的東西(.*?代表這裡可以有任意內容,也可能沒有內容),替換成'  ',也就是什麼都沒有的空白,其實就是刪掉尖括號裡的東西咯(包括尖括號)

Information.append(valuable)   這段代碼的意思是把去掉沒用信息之後的valuable加入Information裡,append是擴展的意思,就是把valuable擴展進來。

最後輸出Information列表,我們的目的就達到啦,成功爬取了那些免費信息


上網的正確姿勢還是明天再說吧,朕肚子餓了,如果你希望使用谷歌學術可以先用

www.meiguge.com哦~

最後附上全部代碼(其中一些變量名不太一樣)

# -*- coding: utf-8 -*-

import re

import urllib2

url='http://www.ishadowsocks.com/'

WangYe=urllib2.urlopen(url).read().decode('UTF-8')

RegularExpression='<h4>(.*?)<\/h4>'

Valuable=re.findall(RegularExpression,WangYe)

Information=[]

for i in range(18):

    valuable=re.sub('<.*?>','',Valuable[i])

    Information.append(valuable)

    print Information[i]

如果你覺得Cosmo這篇文章有趣或者能讓你學到東西,我便十分的高興,希望你能動動小手把文章或公眾號介紹給你好朋友,這就是對我最大的支持啦!支持就是動力,就會繼續寫下去(好順口哈哈)

最後:以上內容的圖片部分來自網絡,若無意侵犯了您的權益,請立即回復公眾號與我聯繫,我會馬上進行處理!為了使文章通俗有趣,部分內容可能不夠嚴謹,還請海涵!本人才疏學淺,若有錯漏之處,歡迎批評指正。本文原創,轉載請註明出處

相關焦點

  • 如何用 Python 爬取網頁製作電子書
    本文來自作者在 GitChat 上分享「如何用 Python 爬取網頁製作電子書」主題內容。有人爬取數據分析黃金周旅遊景點,有人爬取數據分析相親,有人大數據分析雙十一,連小學生寫論文都用上了大數據。我們每個人每天都在往網上通過微信、微博、淘寶等上傳我們的個人信息,現在就連我們的錢都是放在網上,以後到強人工智慧,我們連決策都要依靠網絡。
  • python爬蟲入門實戰!爬取博客文章標題和連結!
    最近有小夥伴和我留言想學python爬蟲,那麼就搞起來吧。準備階段爬蟲有什麼用呢?舉個最簡單的小例子,你需要《戰狼2》的所有豆瓣影評。最先想的做法可能是打開瀏覽器,進入該網站,找到評論,一個一個複製到文本中,保存,翻頁,接著複製,直到翻到最後一頁。
  • 技術分享|利用Python和BeautifulSoup進行網頁爬取(新手教程)
    使用Python與BeautifulSoup可以很容易的進行網頁爬取,通過網站爬蟲獲取信息可以幫助企業或個人節省很多的時間和金錢。學習本文之後,我相信大部分新手都能根據自己的需求來開發出相應的網頁爬蟲。
  • Python開發簡單爬蟲【學習資料總結】
    URL管理器返回是/否; 2、如果是,調度器會從URL管理器中取出一個待爬URL; 3、調度器將URL傳給下載器,下載網頁內容後返回給調度器; 4、調度器再將返回的網頁內容發送到解析器,解析URL內容,解析完成後返回有價值的數據和新的URL; 5、一方面,調度器將數據傳遞給應用進行數據的收集
  • Python爬蟲層層遞進,從爬取一章小說到爬取全站小說!
    很多好看的小說只能看不能下載,教你怎麼爬取一個網站的所有小說知識點:
  • Python爬取B站彈幕並製作詞雲圖
    代碼實現部分 1、請求網頁獲取原始碼數據 爬取這些數據是需要加上cookie的,如果沒有加cookie的話會顯示你未登錄帳號 所以需要在headers裡面添加cookie
  • 如何開始寫你的第一個python腳本——簡單爬蟲入門!
    好多朋友在入門python的時候都是以爬蟲入手,而網絡爬蟲是近幾年比較流行的概念,特別是在大數據分析熱門起來以後,學習網絡爬蟲的人越來越多,哦對,現在叫數據挖掘了!其實,一般的爬蟲具有2個功能:取數據和存數據!好像說了句廢話。。。
  • 用Python進行Web爬取數據
    如果這句話聽起來很熟悉,那麼你並不孤單!希望獲得更多數據來訓練我們的機器學習模型是一個一直困擾人們的問題。我們無法在數據科學項目中獲得可以直接使用的Excel或.csv文件,對嗎?那麼,如何應對數據匱乏的問題呢?實現此目的最有效,最簡單的方法之一就是通過網頁抓取。我個人發現網絡抓取是一種非常有用的技術,可以從多個網站收集數據。
  • Excel與Python爬取數據,兩者PK,誰優誰劣?
    這種方法不同於第一種方法的是:第一種方法直接將網頁內容以文本的形式複製到了Excel中,第二種方法是採用動態連結的方法,如果原始網頁表數值發生變化,只需要刷新下查詢,Excel中的數據會跟著刷新,不需要二次採集,而且從效率上來看,第二種方法要優於第一種方法。
  • 爬取《The Hitchhiker's Guide to Python!》python進階書並製成pdf
    有讀者讓我來個正則的,所以我今天就來個正則+requests來進行爬取。今天原來是想爬小說的,但想到我不怎麼看小說,讀者也是都喜歡學習的,對吧?嘻嘻!所以我來爬個與python相關的內容,恰好前幾天我又看到別人推薦的一本python進階書,這本書的作者是我們的python大神kennethreitz徵集各路愛好python的人所寫的,下面是地址:中文版:http://pythonguidecn.readthedocs.io/zh/latest/英文版:http://docs.python-guide.org
  • Python網頁爬蟲入門指導
    雖然之前有過一些基礎,但是這次還是耗費了一些時間,因為網上,尤其是中文科技網站太多坑要踩,所以,我在這裡用最簡潔的方式寫下網頁爬蟲的入門方法,希望能夠幫助到對網頁爬蟲感興趣卻無從下手的同學。就如同標題指明的那樣,本文主要針對入門,如果尋求進階,或者在爬蟲方面走的更遠,本文提供的幫助也許是微乎其微的。
  • python爬取數據存入資料庫
    昨天本來寫了一篇關於python爬取的文章,結果沒通過,正好今天一起吧。用python同時實現爬取,和存入資料庫,算是複習一下前面操作資料庫的知識。1、準備工作既然是爬取,那自然要連接到爬取的頁面,所以需要requests庫。
  • Python爬蟲入門教程:超級簡單的Python爬蟲教程
    這是一篇詳細介紹 Python 爬蟲入門的教程,從實戰出發,適合初學者。讀者只需在閱讀過程緊跟文章思路,理清相應的實現代碼,30 分鐘即可學會編寫簡單的 Python 爬蟲。寫一個簡單的 HTML通過編寫和修改 HTML,可以更好地理解 HTML。
  • 初學者如何用「python爬蟲」技術抓取網頁數據?
    想要入門Python 爬蟲首先需要解決四個問題:1.熟悉python編程2.了解HTML3.了解網絡爬蟲的基本原理4.學習使用python爬蟲庫1、熟悉python編程剛開始入門爬蟲,初學者無需學習python的類,多線程,模塊和其他稍微困難的內容。
  • python程序媛BeautifulSoup快速入門
    其實,媛媛本人呢,是習慣使用正則的,不過經常聽到很多同學表示正則太複雜,想要使用BeautifulSoup庫,今天呢,就滿足大家,帶著大家超級簡單案例,快速入門。1.首先,使用一個庫,先安裝。參考媛媛之前的帖子,有詳細的教大家第三方庫安裝。2.再,導入我們要用的各種庫。媛媛使用python環境為3.6。想要問問什麼不用2.7的同學,請看媛媛之前的帖子。
  • Python - python爬取新聞專題及常見問題 - CSDN
    最近,在數據挖掘課,要交課設了,打算做一個通過機器學習進行新聞分類,首先要有大量的文本(新聞),去做訓練,並通過爬蟲爬取大量的新聞一,思路如下:0.首先確定獲取數據的網站1.通過BeautifulSoup來切取連結2.
  • 使用Python爬取妹子圖高清圖片
    前面的章節我們學習了部分有關Python爬蟲的內容。今天,我們將前面內容進行實踐,我們爬取妹子圖高清圖片內容。好了,廢話不多說,我們通過從以下幾個方面介紹整個爬取過程。先送大家一張福利,增加一點爬取動力。
  • Python 網絡爬蟲實戰:爬取並下載《電影天堂》3千多部動作片電影
    所以這次我們要爬取的網站是:《電影天堂》,屯一些電影,等無聊的時候拿出來看看,消遣消遣也是不錯。 這次的網站,從爬蟲的技術角度上來講,難度不大,而且可以說是非常簡單了。但是,它實用啊!你想嘛,早上上班前跑一下爬蟲,晚上回家以後已經有幾十部最新大片在你硬碟裡等著你啦,累了一天躺床上看看電影,這種感覺是不是很爽啊。
  • 零基礎不知道如何做Python爬蟲,這是一份簡單入門的教程!
    隨著網際網路的數據爆炸式增長,而利用Python爬蟲我們可以獲取大量有價值的數據:1.爬取數據,進行市場調研和商業分析爬取知乎優質答案,篩選各話題下最優質的內容; 抓取房產網站買賣信息,分析房價變化趨勢、做不同區域的房價分析;爬取招聘網站職位信息,分析各行業人才需求情況及薪資水平
  • stata調用python爬取時間數據——借他山之石以攻玉
    該功能使得,我們可以先利用python爬取數據,然後再利用用戶所熟悉的stata去處理數據,因為stata在處理數據方面具有一定的優勢。那麼今天我們就來看看,怎樣利用stata調用python爬取數據,再用stata進行處理?今天試爬的數據是巨潮網上的預約年報的披露時間數據。