版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
本項目學習內容包括:1.大數據采集和傳統(tǒng)數據采集的差別2.大數據采集的幾種方式和常用工具3.windows系統(tǒng)下Python的安裝和環(huán)境變量設置4.如何用Python編寫爬蟲程序從網站爬取房價數據,進行數據采集本項目學習主要內容本項目思維導圖
數據采集,又稱數據獲取,是指從真實世界中獲取原始數據的過程。
在社會初期,數據的產生是伴隨著我們的生產經營活動,數據量非常少,且沒有專門的數據存儲工具,數據存儲多用紙質記錄。隨著社會的發(fā)展,數據產生量逐漸增多,同時我們也產生了一定的數據存儲和數據分析需求,需要用一個專門的工具去把數據存儲起來,在我們需要時可以拿出來進行分析,這就產生了數據庫。由于當時數據來源單一,一般為業(yè)務數據和行業(yè)數據,數量還是比較小,且數據結構固定,采集到的數據一般用關系數據庫進行存儲例如MySQL、Oracle、SQLSever。
大數據時代,隨著各種傳感器和智能設備的應用,數據的產生是主動的,每分每秒都在產生數據。數據來源眾多,比如RFID數據、傳感器數據、用戶行為數據、社交網絡交互數據及移動互聯網數據等。數據采集的數據量劇增,大量非結構化數據和非結構化數據的產生,單一數據庫并不能滿足存儲需求,采集到的數據需要采用分布式數據庫對數據進行存儲。對于大數據的采集,傳統(tǒng)的數據采集方式已經不能滿足需求。任務4-1初識數據采集4.1.1傳統(tǒng)數據采集和大數據采集簡介大數據采集和傳統(tǒng)數據采集的區(qū)別如下。任務4-1初識數據采集
因此,我們在傳統(tǒng)數據采集方式上進行改變構建大數據采集方式,我們對數據源和數據類型進行重新劃分,爭對不同的數據源,采用不同的采集技術進行數據采集。大數據數據源眾多總體可以分為分為4大類,企業(yè)系統(tǒng)、機器系統(tǒng)、互聯網系統(tǒng)和社交系統(tǒng)。
在企業(yè)系統(tǒng)中我們主要采集業(yè)務數據,業(yè)務數據牽涉到企業(yè)的核心利益一般具有隱私性,需要企業(yè)授權才能進行數據采集。在機器系統(tǒng)中主要采集行業(yè)數據和線下行為數據。在互聯網系統(tǒng)中主要采集業(yè)務數據和用戶線上行為數據。在社交系統(tǒng)中主要采集用戶內容數據和用戶的線上行為數據。任務4-1初識數據采集
不同類型的數據,采集方式是不同的。下面介紹幾種主流大數據采集方式。1.業(yè)務數據采集
企業(yè)每時每刻都會產生業(yè)務數據。業(yè)務數據采集模式根據數據處理分析的實時性要求,可以分為實時采集和離線采集。實時采集要求實時性非常高,一般需要采用Kafka等實時數據采集工具。采集的數據經過實時提取、清洗、轉換處理,有價值的數據被保存在數據庫中,無價值數據則丟棄。離線采集實時性要求不高,對應于傳統(tǒng)數據倉庫的數據采集模式,數據定時經過離線批量提取、清洗、轉換操作,進入數據庫保存。任務4-1初識數據采集4.1.2大數據采集方式2.日志數據采集
隨著信息化浪潮的不斷前進,越來越多的企業(yè)構建自己的互聯網業(yè)務平臺,這些平臺每天都會產生大量的日志數據。對于這些日志數據,我們可以把它們收集起來進行數據分析處理,挖掘日志數據中的潛在價值。為公司決策和公司后臺服務器平臺性能評估提高可靠的數據保證。根據日志數據處理實時性要求,日志數據采集也分為實時采集和離線采集。目前常用的開源日志采集工具有Flume、Scribe等。任務4-1初識數據采集
3.網絡數據采集網絡數據采集是通過網絡爬蟲和一些網站平臺提供的公共API(如Twitter和新浪微博API)等方式從網站上獲取數據。通過網絡爬蟲和公共API可以將網頁中的非結構化數據和半結構化數據的提取出來。并將其進行提取、清洗、轉換處理形成結構化的數據,存儲在本地數據存儲系統(tǒng)中。目前常用的網頁爬蟲框架有ApacheNutch、Crawler4j、Scrapy等。任務4-1初識數據采集4.感知設備數據采集
感知設備數據采集是指通過傳感器、攝像頭和其他智能終端自動采集信號、圖片或錄像來獲取數據。在物聯網盛行的今天,大量的各種各樣的傳感器存在于我們的日常生活中,每時每刻都采集并傳輸大量監(jiān)測數據。任務4-1初識數據采集
常見的大數據采集工具眾多,這里我們介紹兩種主流數據采集工具Flume和Kafka。1.FlumeFlume是Apache旗下的的一款高可用的,高可靠的,分布式的海量日志采集、聚合和傳輸工具。Flume最早由Cloudera提出,用于日志收集。Flume是基于JRuby構建,運行時需要依賴Java環(huán)境。Flume的核心是Agent,Flume就是由1個或多個Agent組成。通過Agent可以把數據從源頭收集到目的地。Agent本身是一個Java進程,包含三個組件采集源、下沉地和數據傳輸通道。任務4-1初識數據采集4.1.3大數據采集工具1)采集源
采集源又稱為Source,用于跟數據源對接,以獲取數據。2)下沉地
下沉地又稱為Sink,Sink是采集數據的傳送目的,用于往下一級Agent傳遞數據或者往最終存儲系統(tǒng)傳遞數據。3)數據傳輸通道數據傳輸通道又稱為Channel,是Agent內部的數據傳輸通道,用于從Source將數據傳遞到Sink。Flume內部數據傳輸的最基本單元是event。數據的傳輸的過程中,event將傳輸的數據進行封裝,然后帶著數據從Source到Channel再到Sink。任務4-1初識數據采集
Flume的架構靈活多變,根據Agent的數量和連接方式,Flume擁有不同的架構。任務4-1初識數據采集串聯并聯多SinkAgent架構任務4-1初識數據采集2.KafkaKafka是Apache旗下的一個開源流數據處理平臺。Kafka是最初由Linkedin公司開發(fā),并于2010年貢獻給了Apache基金會并成為頂級開源項目。Kafka是一種具有高性能、持久化、多副本備份、橫向擴展能力的分布式發(fā)布訂閱消息系統(tǒng),Kafka內部是一個分布式消息隊列,運行基于生產者消費者模式,生產者往隊列里寫消息,消費者從隊列里取消息進行業(yè)務邏輯。任務4-1初識數據采集下面先介紹一下Kafka的相關概念。1)服務器節(jié)點服務器節(jié)點稱為Broker,Kafka集群包含一個或多個服務器節(jié)點。2)消息主題
每條發(fā)布到Kafka集群的消息都有一個主題,這個主題被稱為Topic。3)分區(qū)一個Topic中的數據會被分割為一個或多個分區(qū)(Partition)。每個Topic至少有一個Partition。4)生產者生產者(Producer)即數據的發(fā)布者,負責發(fā)布消息到Kafka的Broker中。5)Consumer消費者(Consumer)即數據的接收者,負責從Kafka的Broker中讀取數據。6)消費者組每個Consumer屬于一個特定的消費者組(ConsumerGroup)。創(chuàng)建Consumer時可為每個Consumer指定組名,若不指定組名則該Consumer屬于默認的組。任務4-1初識數據采集
一個典型的Kafka集群架構如下。集群中包含多個Producer,多個Broker和多個ConsumerGroup,以及一個Zookeeper集群。Zookeeper負責對整個Kafka集群進行配置管理。任務4-1初識數據采集Kafka的Producer工作原理如下。(1)Producer先從Zookeeper節(jié)點找到Topic下Partition的Leader。(2)Producer將消息發(fā)送給該LeaderPartition。(3)LeaderPartition將消息寫入本地。(4)FollowerPartition從Leader復制消息,寫入本地log后向Leader發(fā)送ACK。(5)LeaderPartition收到所有的FollowerPartitionACK后,向Producer發(fā)送ACK。任務4-1初識數據采集Kafka消費采用拉取模型,由消費者自己記錄消費狀態(tài),每個消費者互相獨立地順序讀取每個分區(qū)的消息。同一個消費組的消費者不能同時消費一個Partition,不同消費組的消費者可以同時消費一個Partition。Kafka的消費者工作原理如下。
(1)當消費者需要訂閱Topic數據時,Kafka集群會向消費者提供當前Topic的偏移,并保存在Zookeeper中。
(2)消費者定期進行消費請求,如果生產者有消息發(fā)過來,Kafka集群會馬上發(fā)送給消費。
(3)消費者消費了消息之后,發(fā)送一個確認消息給Kafka集群,Kafka會更新該消費者的偏移,并更新Zookeeper。隨后消費者進行下一個信息的消費。任務4-1初識數據采集
從數據源采集的原始數據一般都是“臟”的,所謂“臟”就是值數據不正常,會影響后續(xù)數據存儲和處理過程,甚至數據分析的準確性。比如數據缺失、數據值異常、數據格式不合要求等,這時候就需要我們對原始數據進行數據預處理操作,保證數據采集的數據質量,以便后續(xù)步驟的順利進行。
一般數據預處理主要分為以下幾個方面數據清洗,數據轉換,數據集成,數據規(guī)約。1.數據清洗
數據清洗主要是對缺失數據和異常值數據處理等。缺失數據就是數據值為空,比如爬取數據時,發(fā)現有多個記錄中的某一列為空,這就是缺失數據。對缺失數據最簡單的處理方式是丟棄該條記錄,但是如果缺失值較多時,丟棄數據量很大,這樣處理并不好。那我們就必須要填補缺失數據,這里介紹幾種缺失數據的填補方式。任務4-1初識數據采集4.1.4數據預處理
(1)利用默認值填補缺失值,自己定義一個缺省默認值5000,若發(fā)現缺失數據,則用5000填補。
(2)利用均值填補缺失值,計算所有用戶的平均月均消費額,并利用該值填補。
(3)利用最可能出現的值進行填補,這個就需要構建機器學習算法模型做預測,利用預測的值進行填補。
異常值數據就是數據值為處于非正常狀態(tài),比如1個人的年齡為負值,或者某個數據值超出整個平均值很多。這個時候需要我們對異常數據進行更改糾正,或者丟棄。任務4-1初識數據采集2.數據集成如果數據采集的源數據來自多個不同的數據源,這時就需要把采集的源數據合并在一起并形成一個統(tǒng)一數據集合,放到一個數據庫進行存儲,這就是數據集成。在進行數據集成時可能會出現如下問題。
(1)異名同義
兩個數據源某個屬性名字不一樣但所代表的實體一樣。
(2)數據冗余
比如同一屬性在多個數據源都有出現,數據集成合并時候該屬性會多次出現,但屬于重復出現,實際只需要出現一次。還比如某些統(tǒng)計信息(平均值,最大值,最小值等),可以根據具體值算出來的,不需要進行單獨存儲。
(3)數據表示不一樣
比如各個數據源字符編碼不一樣有的用GBk,有的用utf8,還比如重量的單位,有的用千克,有的用英鎊,這時候數據集成需要統(tǒng)一數據表示。任務4-1初識數據采集3.數據轉換
數據變換就是數據轉化成適當的形式,來滿足后續(xù)數據處理或數據分析的需要。比如數據的歸一化處理,數據的平滑處理和連續(xù)屬性值離散化處理等,數據轉換多用于機器學習前期的數據處理中。4.數據規(guī)約
如果我們數據采集的數據量非常大,數據歸約可以用來得到原始數據集的精減表示,它比原始數據集小得多,但仍然接近于保持原數據的完整性,數據分析結果與歸約前結果幾乎相同。數據規(guī)約方式主要有數據維數的消減,數據壓縮等等。任務4-1初識數據采集
網絡爬蟲是一個模擬人類請求網站行為的程序或腳本。網絡爬蟲可以自動請求網頁并使用一定的規(guī)則把我們所需要的有價并值的數據抓取下來。網絡爬蟲的英文即WebSpider。Web是互聯網,Spider是蜘蛛。如果把互聯網比喻成一個蜘蛛網,那么網絡爬蟲就是在網上爬來爬去的蜘蛛。網絡爬蟲的工作方式就是通過網頁的鏈接地址來尋找網頁,從網站某一個頁面開始抓取網頁數據,完畢后再網頁中尋找下一個鏈接地址,然后通過下一個鏈接地址尋找下一個網頁繼續(xù)抓取數據,往復循環(huán)下去,直到該網站所有的網頁數據都抓取完完畢為止。任務4-2認識互聯網數據采集4.2.1初識爬蟲
那么,為什么會出現爬蟲?爬蟲給我們帶來哪些好處?
在大數據時代,我們知道數據是海量的,數據分析處理都是基于全量數據而非抽樣數據。數據分析處理的結果準確性有很大一部分因素取決于數據量是否足夠大。因此我們需要盡可能多的數據來進行數據分析,這樣準確度才比較高。但是這么巨量的數據從哪里來呢?
我們知道數據是具有隱私性的,在大數據時代,數據具有很高價值,是“軟黃金”,數據可以交易。而大量的數據往往掌握在少部分公司手中,他們不會輕易暴露公開出來。我們只能用大量金錢去等價交易買過來,很顯然這是不劃算的,何況個人很多時候根本拿不出那么多錢來買。那是不是就沒有辦法了呢?答案是no,我們還有一條路。在互聯網高度發(fā)達的今天,網絡上充斥著大量的數據信息,如果我們采用某種方式,從網絡上把數據采集下來,這樣就可以以極低的成本獲取大量數據。任務4-2認識互聯網數據采集
如何從網絡上采集數據呢?假設我們要收集網上某個城市近三年的全部天氣數據。數據以月為單位總共分為12*3=36頁,每一頁為一個月的數據(假設一個月30天就有30條數據)。對于這樣的需求,最簡單的數據采集方式就是人工去打開某城市的天氣網站,找到需要的天氣數據,然后一條條復制下來粘帖到excel表格保存。由于數據總共有36頁,我們就要點擊36次翻頁按鈕來切換網頁。這是非常繁瑣。如果其中的原始數據有錯誤,我們還必須要對數據進行糾正。這樣數據采集速度慢,很容易出錯,人力成本也高。何況這只是采集一個城市的數據,如果采集100個城市的呢?任務4-2認識互聯網數據采集
我們知道這種數據采集工作的重復性非常高。對于如此高重復性的工作,我們?yōu)楹尾豢砂阉唤o計算機來做呢?這樣即提升了數據采集效率,也節(jié)約了成本。我們可以編寫一段程序讓程序來執(zhí)行網上數據采集工作,同時還能對采集的數據進行初步處理,過濾異常數據。這就是網絡爬蟲。利用網絡爬蟲技術我們只需要一臺計算機和一條網線就能快讀的把數據從網上采集下來。這樣即提升了數據采集效率,也節(jié)約了成本。同時我們還可以利用該爬蟲去爬取其他城市天氣數據,一天24小時不中斷爬取數據,這是人工數據采集所不具備的。
網絡爬蟲的出現使得企業(yè)和個人能夠低成本快速的從網上爬取所需要的數據。但是對網絡爬蟲的評價,有人說好有人說不好,好不好關鍵是看我們怎么用?我們要合法、合理、合規(guī)的使用,不能利用爬蟲技術對危害社會。比如就有很多“黃牛”利用爬蟲技術在各大航空公司網站搶購廉價機票,然后以幾倍價錢出售,并賺取高額利潤。任務4-2認識互聯網數據采集
經過4.2.1節(jié)的學習,我們知道爬蟲其實就是一段程序或一個腳本用于爬取網絡數據。常用來編寫爬蟲的語言有Java、Python、Go、PHP、R語言等。至于C/C++語言,運行速度是最快的,但是開發(fā)周期太長,學習難度也大,一般很少有人用來做爬蟲,多用于底層開發(fā)。本書選用Python語言編寫爬蟲案例,對于未接觸過爬蟲或者初入編程門檻的讀者來說,Python編寫爬蟲上手比較快。下表歸納了幾種爬蟲語言各自的優(yōu)劣。任務4-2認識互聯網數據采集4.2.2爬蟲編程語言及爬蟲分類幾種爬蟲語言的優(yōu)劣語言優(yōu)勢劣勢Python代碼簡潔,容易上手,開發(fā)效率高,多線程機制,有現成的爬蟲框架對不規(guī)范HTML爬取能力差,需要自己編碼處理Java爬蟲生態(tài)圈很完善,多線程機制過于笨重,代碼量比較大,數據重構成本高PHP世界上最好的語言,語法簡單,功能模塊齊全無多線程機制,并發(fā)不好,異步實現難Go語法簡單,運行速度快,多線程機制普及度不夠高R語言操作簡單,適合小規(guī)模數據爬取功能較弱,不適合大規(guī)模數據爬取C/C++運行速度最快,性能最高開發(fā)周期長,學習難度大,一般用于底層功能實現
一般來說,爬蟲可以分為以下幾種類別,分別是通用爬蟲、聚焦爬蟲、增量爬蟲和深度爬蟲。1.通用爬蟲
通用網絡爬蟲的爬取目標是全網資源,目標數據龐大。主要為門戶站點搜索引擎和大型Web服務提供商采集數據。通用網絡爬蟲的結構大致可以分為頁面爬行模塊、頁面分析模塊、鏈接過濾模塊、頁面數據庫、URL隊列、初始URL集合幾個部分。通用爬蟲的基本流程如下圖所示。任務4-2認識互聯網數據采集
具體執(zhí)行流程分為下列幾個步驟。(1)選取互聯網里一部分網頁,將其鏈接地址作為種子URL,將種子URL放入待抓取URL隊列中等待爬蟲來讀取。(2)爬蟲從待抓取URL隊列依次讀取URL。(3)將讀取的URL進行DNS解析,把鏈接地址中的域名轉換為服務器對應的IP地址。(4)將將經過DNS解析的URL發(fā)送給網頁下載器。(5)網頁下載器根據得到的URL進行網頁頁面內容的下載。(6)網頁的頁面內容下載完畢后,對于下載到本地的網頁,一方面將其存儲到頁面庫中,建立索引方便后期處理。同時將下載網頁的URL放入已抓取URL隊列中,以避免重復抓取。(7)對已經下載的網頁,從中抽取出網頁內所包含的所有鏈接信息即URL。(8)在已抓取URL隊列查詢這些鏈接是否被抓取過。(9)如果沒有,則將這個URL放入待抓取URL隊列末尾,在之后繼續(xù)對該URL對應的網頁進行內容抓取。(10)重復2-9步直到待抓取URL隊列為空,這時,爬蟲系統(tǒng)將我們選取的所有網頁內容全部抓取完畢。任務4-2認識互聯網數據采集
通用爬蟲并不是所有網頁都可以爬取的,它需要遵守Robots協(xié)議,網站就是通過Robots協(xié)議告訴搜索引擎哪些頁面可以抓取,哪些頁面不能抓取。淘寶和騰訊的Robots協(xié)議如下圖所示。通用爬蟲的優(yōu)點在于爬取數據范圍大、數量多、通用性強。缺點在于只能爬取和文本相關的內容(HTML、WORD、PDF)等,不能爬取多媒體文件(picture、video)及其他二進制文件。爬取結果只具有通用性,沒有爭對特定需求,不能針對不同背景領域的人爬取不同數據。任務4-2認識互聯網數據采集2.聚焦爬蟲
聚焦爬蟲是按照預先定義好的主題有選擇地進行網頁爬取,即有的放矢。爬取目標為與特定主題相關的頁面,用于應對特定人群的特定需求。聚焦爬蟲在通用爬蟲結構的基礎上,增加了鏈接評價模塊以及內容評價模塊。這兩個模塊用來評價頁面內容和鏈接的與主題的關聯性,爬取時候優(yōu)先爬取關聯性性高的鏈接和內容。與主題的關聯性的計算有不同種類的計算方式,一般都需要使用一些機器學習算法。3.增量爬蟲
增量爬蟲是指對已下載網頁采取增量式更新和只爬行新產生的或者已經發(fā)生變化網頁的爬蟲。和周期性爬行和刷新頁面的網絡爬蟲相比,增量式爬蟲只會在需要的時候爬行新產生或發(fā)生更新的頁面,并不重新下載沒有發(fā)生變化的頁面。這樣可有效減少數據下載量,及時更新已爬行的網頁,減小時間和空間上的耗費。4.深層爬蟲
網頁按存在方式可以分為表層網頁和深層網頁。表層網頁是指不存要提交表單,利用傳統(tǒng)搜索引擎可以索引的頁面,該類型頁面一般為靜態(tài)頁面,訪問通過靜態(tài)鏈接訪問。深層網頁是那些不能通過靜態(tài)鏈接訪問的頁面,用戶只有輸入一些關鍵詞進行表單提交操作才能訪問網頁。比如需要用戶注冊后才能進入的BBS論壇等。目前互聯網上的深層網頁大大多于表層網頁。深層爬蟲一般爭對深層網頁爬取數據。
本書中的編程實現數據爬取的爬蟲案例屬于第二種聚焦爬蟲。任務4-2認識互聯網數據采集環(huán)境搭建步驟包含4.3.1Windows下Python3.x的安裝和環(huán)境變量配置4.3.2requests和BeautifulSoup包安裝4.3.3PyCharm安裝和使用教材中任務4-3中有詳細實現,這里不做展示任務4-3Windows下Python爬蟲開發(fā)環(huán)境搭建
爬蟲爬取網頁數據的基本過程類似于我們?yōu)g覽網頁的過程。主要分為兩個步驟。1.Http-Request
在Http-Request階段,爬蟲程序對需要爬取數據的網頁服務器發(fā)送Http請求,并等待網頁服務器的Http響應。2.Http-Response
在Http-Response階段,網頁服務器接收到請求后,驗證請求的合法性,然后將爬蟲程序請求的網頁數據封裝好,發(fā)送Http響應。爬蟲程序接收網頁服務器響應,經過程序代碼的解析處理,獲取需要爬取的網頁內容。
由于Http請求有2鐘方式get和post,本書編寫爬蟲程序選用序選擇get方式。任務4-4如何編寫Python爬蟲應用程序4.4.1爬蟲爬取數據過程
網頁一般由三部分組成,分別是HTML(超文本標記語言)、CSS(層疊樣式表)和JavaScript(活動腳本語言)。由于我們寫爬蟲只是爬取網頁數據,所以我們最關注的就是HTML,因為數據一般都是放在Html標簽內或者在標簽的屬性中。我們打開Google瀏覽器,在Google搜索引擎主頁中單擊右鍵,選擇“查看網頁源代碼”,即可看到整個網頁的結構。任務4-4如何編寫Python爬蟲應用程序4.4.2網頁的基本結構
使用requests庫的get方式抓取網站數據的代碼格式為:request.get(url),其中url為網站路徑。下面我們實驗一下。實驗需安裝requests包。
(1)打開Pycharm,選擇PurePython。新建一個Python工程,工程名為mypachong。設定Python項目存放位置。然后為Python項目創(chuàng)建虛擬環(huán)境,展開ProjectInterpreter:NewVirtualenvEnvironment節(jié)點,然后選擇Virtualenv創(chuàng)建新虛擬環(huán)境的工具。并指定用于新虛擬環(huán)境的位置和Python解釋器。點擊“create”按鈕創(chuàng)建項目。任務4-4如何編寫Python爬蟲應用程序4.4.3使用requests包抓取網站數據
如果我們在前面在本地Python環(huán)境安裝了requests和BeautifulSoup包,這里可以直接導入本地配置。如果沒有安裝,可以在后續(xù)編碼過程中一個個添加,具體見第4步。下面我們介紹如何導入本地Python環(huán)境。在“File”菜單下點擊“Setting”,彈出下圖。任務4-4如何編寫Python爬蟲應用程序
點擊上圖右邊紅色框中按鈕,再點擊“add”,彈出下圖,在圖中選擇已安裝的環(huán)境(existingeuvironment)選項,然后點擊右邊的按鈕添加本地的Python環(huán)境任務4-4如何編寫Python爬蟲應用程序
點擊右邊的按鈕彈出下圖所示界面,在圖中選取路徑至本地安裝的python.exe文件,點擊“OK”。任務4-4如何編寫Python爬蟲應用程序
返回上一級窗口,繼續(xù)點擊“ok”,則進入下圖所示界面,圖中會顯示出已經自動加載的本地Python安裝的開源庫,點擊“Apply”即可,至此,本地Python環(huán)境已經導入完畢,后續(xù)就不用安裝requests和BeautifulSoup包了。任務4-4如何編寫Python爬蟲應用程序
(2)在下圖中右鍵項目根目錄,在彈出的窗口中,選擇PythonFile,在彈出的窗口中輸入文件名為requestdemo。新建一個Python源文件。任務4-4如何編寫Python爬蟲應用程序
(3)在Python源文件輸入以下代碼。對騰訊首頁網頁的源代碼進行爬取。#-*-coding:utf-8-*-importrequests#導入requests包url='/'strhtml=requests.get(url)#Get方式獲取網頁數據print(strhtml.text)(4)若前面第一步沒有導入本地Python環(huán)境,則會出現如下圖所示報錯,提示沒有安裝request包,點擊installpackagerequests安裝即可。安裝成功會彈出提示框。任務4-4如何編寫Python爬蟲應用程序
(5)在requestdemo.py上點擊右鍵,點擊Runrequestdemo運行程序。程序運行后,我們看到如下圖所示數據爬取結果,成功爬取了騰訊首頁的源代碼,這就完成了網頁數據的爬取。任務4-4如何編寫Python爬蟲應用程序
上面我們通過requests庫已經可以抓到網頁源碼,接下來我們利用BeautifulSoup包從源碼中找到并提取數據。BeautifulSoup包目前已經被移植到bs4庫中,安裝BeautifulSoup包時需要先安裝bs4庫。
(1)我們在mypachong工程里面再新建一個jiexidemo文件,用來解析騰訊首頁的部分信息。假設我們需要爬取騰訊網的菜單欄數據,如下圖所示。爬取數據需要進行數據清洗,進行數據格式轉換,轉換為如下格式。{'text':item.get_text(),'href':item.get('href')}其中,text為單個菜單項內容,比如新聞。href為單個菜單項的超鏈接地址。任務4-4如何編寫Python爬蟲應用程序4.4.4使用BeautifulSoup包解析網站數據并進行數據清洗
(2)定位騰訊首頁菜單欄的數據標簽,比如新聞這個菜單在哪個標簽內。在鍵盤上按“F12”鍵彈出開發(fā)者界面,按照下圖中操作,則可以顯示新聞所在的網頁標簽。任務4-4如何編寫Python爬蟲應用程序
(3)在下圖頁面的“新聞”上右鍵,在彈出的菜單中選擇“Copy”?“CopySelector”命令,便可以自動復制標簽路徑,標簽路徑如下。body>div.global>div.layout.qq-nav>div>ul>li:nth-child(1)>a由于我們要獲取所有菜單項的信息,所以我們把上面的路徑改一下,去掉li后面的:nth-child(1),更改后的路徑如下,這個路徑就是我們后面編程要寫入的菜單項的標簽路徑。body>div.global>div.layout.qq-nav>div>ul>li>a任務4-4如何編寫Python爬蟲應用程序
(4)jiexidemo文件中輸入代碼如下,會提示需要安裝BeautifulSoup包,點擊installpackageBeautifulSoup4安裝即可。lxml包用于解析HTML。#-*-coding:utf-8-*-importrequests#導入requests包frombs4importBeautifulSoupurl='/'strhtml=requests.get(url)soup=BeautifulSoup(strhtml.text,'lxml')data=soup.select('body>div.global>div.layout.qq-nav>div>ul>li>a')array_list=[]foritemindata:print(item.get('href'))result={'text':item.get_text(),'href':item.get('href')}array_list.append(result)print(array_list)任務4-4如何編寫Python爬蟲應用程序
(5)在jiexidemo.py上點擊右鍵,點擊Runjiexidemo運行程序。程序運行后,我們看到如下圖所示運行結果,結果顯示我們把騰訊首頁所有菜單項的內容和超鏈接地址都獲取到了。任務4-4如何編寫Python爬蟲應用程序
爬蟲功能:用于從鏈家網上爬取當前的二手房房價數據,并保存在guangzhouershoufang.csv文件里。
爬取數據項:房子所在的區(qū)域,房子所在的子區(qū)域,房子的地址,房子的單價,房子的總價,房子的描述,房子是否滿5年/滿2年。各個數據項在鏈家網上的顯示位置如圖4-49所示。任務4-4如何編寫Python爬蟲應用程序4.4.5編寫完整的爬蟲程序爬取數據并進行預處1.利用4.4.4小節(jié)所示的方式準確定位需要爬取的數據標簽(1)房子所在區(qū)域的數據標簽為:body>div:nth-child(12)>div>div.position>dl:nth-child(2)>dd>div:nth-child(1)>div:nth-child(1)>a.selected'(2)房子所在子區(qū)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣東石油化工學院《Andoid基礎編程》2023-2024學年第一學期期末試卷
- 廣東汕頭幼兒師范高等??茖W校《第一外國語英》2023-2024學年第一學期期末試卷
- 廣東農工商職業(yè)技術學院《生物制藥學科前沿進展》2023-2024學年第一學期期末試卷
- 廣東茂名幼兒師范??茖W校《促銷策略》2023-2024學年第一學期期末試卷
- 廣東茂名健康職業(yè)學院《英國文學下》2023-2024學年第一學期期末試卷
- 廣東理工職業(yè)學院《美國社會與文化》2023-2024學年第一學期期末試卷
- 一年級數學計算題專項練習集錦
- 大腦的奧秘:神經科學導論(復旦大學)學習通測試及答案
- 【2022屆走向高考】高三數學一輪(北師大版)基礎鞏固:第8章-第1節(jié)-簡單幾何體及其三視圖和直觀圖
- 2022韶山市高考英語閱讀理解及書面表達精煉(8)及答案
- 習慣性違章培訓
- 2024年云南昆明市公安局直屬部門缺勤務輔警招聘筆試參考題庫附帶答案詳解
- 碼頭建設報批程序
- 商務數據分析智慧樹知到期末考試答案2024年
- 2019年10月廣東省自考00850廣告設計基礎試題及答案含解析
- DG-TJ08-2425-2023 道路隧道養(yǎng)護運行評價技術標準
- 膠囊內鏡知識課件
- 智聯招聘題庫國企筆試題型
- 車聯網分析報告
- 高新區(qū)八年級(上)期末語文試卷(含答案)
- 森林防火智能監(jiān)控設計方案樣本
評論
0/150
提交評論