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