二手房數(shù)據(jù)爬取系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)原始_第1頁(yè)
二手房數(shù)據(jù)爬取系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)原始_第2頁(yè)
二手房數(shù)據(jù)爬取系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)原始_第3頁(yè)
二手房數(shù)據(jù)爬取系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)原始_第4頁(yè)
二手房數(shù)據(jù)爬取系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)原始_第5頁(yè)
已閱讀5頁(yè),還剩33頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

鎮(zhèn)率將達(dá)鎮(zhèn)率將達(dá)關(guān)鍵詞:二手房;scrapy;數(shù)據(jù)爬?。环墙Y(jié)構(gòu)化數(shù)Withtherapiddevelopmentofsocialeconomyandtheacceleratedconstructionofurbanization,therealestatetransactionisbecomingmoreandmorepopular,especiallythesecond-handhousingtransactionmarketremainshigh.Second-handhousingisnotonlyhousing,butalsousedbypeopletoinvestmoney.BynowistheageWiththerapiddevelopmentofsocialeconomyandtheacceleratedconstructionofurbanization,therealestatetransactionisbecomingmoreandmorepopular,especiallythesecond-handhousingtransactionmarketremainshigh.Second-handhousingisnotonlyhousing,butalsousedbypeopletoinvestmoney.BynowistheageoftheInternet,allwalksoflifecanbeintheInternettofindtheirowngrowth,thepublic'slifeisbecomingmoreandmoreinseparablefromtheInternet,andputtingforwardalongwiththenationalpolicy,therateofourcountrytownin2020isexpectedtoreach60%,whichmeansmoreandmoreruralresidentswillgototown,theymostlyamongtheyounggeneration,especiallyafter90and95aftertheurgentneedofhousing,soneedmorehouses.Butinrecentyears,ashousingpriceshavesoaredandtheofflinerealestateindustrycontinuestosuffer,moreandmoreyoungpeoplearechoosingtobuyhousesontheInternet.However,withtherapiddevelopmentofInternet,thedataacquisitionhasnoproblem,itisintheeraofbigdata,thepeopleinthefaceofcomplexdisorderinformation,donotknowhowtostart,especiallysecond-handhousingselectionismoredifficult,thedatasourceiswide,allkindsofpricesisuneven,howtopromotethepurchaseofsecond-handhousingandleasinghasbecomeaproblemworthytobediscussed.Thispapertakesthisastheresearchdirection,designsandimplementsasecond-handhousedatacrawlingsystembasedonPythonopensourcecrawlerframeworkscrapy,whichismainlyusedtocrawlthesecond-handhousewebsiteofHOMELINKontheInternet.Takingzhengzhouurbanareaasadivision,thecrawledhousingsourcedataarestoredintheunstructureddatabaseMongoDB,andthenthecrawleddataarecleanedandmined,andthesecond-handhousingdataarevisualized.Keywords:ResoldApartment;Scrapy;DataCrawler;NoSQL目錄摘 1緒 目錄摘 1緒 本章小 2 2.1robot協(xié)議對(duì)本設(shè)計(jì)的影 爬 scrapy架 2.5.1scrapy:開(kāi)源爬蟲(chóng)架 3 3.1系統(tǒng)分 數(shù)據(jù) 4 4.1.1環(huán)境搭建與前期分 4.4本章小 4.4本章小 5系統(tǒng)測(cè) 5.2.1數(shù)據(jù)爬取功能測(cè) 6總結(jié)與展 參考文 11.121世紀(jì)以來(lái),互聯(lián)網(wǎng)已真正進(jìn)入千家萬(wàn)戶,特別是隨著時(shí)代的發(fā)展和網(wǎng)絡(luò)技術(shù)11.121世紀(jì)以來(lái),互聯(lián)網(wǎng)已真正進(jìn)入千家萬(wàn)戶,特別是隨著時(shí)代的發(fā)展和網(wǎng)絡(luò)技術(shù)術(shù)原型非常吸引人,5G和我們之間的距離正在逐步接近了。即使在傳統(tǒng)醫(yī)療行業(yè),手Internet的發(fā)展,網(wǎng)絡(luò)數(shù)據(jù)在數(shù)據(jù)量和數(shù)據(jù)復(fù)雜性方面呈指數(shù)級(jí)增長(zhǎng)。根據(jù)世IDC202035ZB。[9]2017IP2015-2020期間數(shù)據(jù)擇,其中80后居多,北上廣深的二手房用戶超過(guò)了30%,省會(huì)以及二三線城市的用戶比 URLURL的網(wǎng)頁(yè)內(nèi)容,得到復(fù),不斷從請(qǐng)求隊(duì)列中提取URL進(jìn)行請(qǐng)求,直至請(qǐng)求隊(duì)列為空或某些其他情況1.1python語(yǔ)言在爬蟲(chóng)設(shè)計(jì)與實(shí)現(xiàn)中具有獨(dú)特的優(yōu)勢(shì)。首先,pythonscrapy等一些其python依然提供了眾多成熟的第三方庫(kù)如request、Beautiful解析庫(kù)等等,其中也集成python1.2.2分鐘的瀏覽量為1.2萬(wàn),真實(shí)用戶僅有500人左右,爬蟲(chóng)流量占比峰值曾達(dá)到了headers。headersHTTP協(xié)議的一部分,是區(qū)分人與機(jī)器的最第二,IP限制。爬蟲(chóng)與人訪問(wèn)網(wǎng)頁(yè)最大的區(qū)別在于,爬蟲(chóng)一般完成的是短時(shí)間內(nèi)超一種十分高效的反爬手段:IPIP在短時(shí)間內(nèi)的訪問(wèn)量超出了某個(gè)既IP代理html代碼中,這樣既不會(huì)影響到正常用戶的訪問(wèn),又可第五,驗(yàn)證碼。驗(yàn)證碼全稱為全自動(dòng)區(qū)分計(jì)算機(jī)和人類的圖靈測(cè)試,它2002MongoDBpythonscrapy對(duì)MongoDB,避免網(wǎng)上信息的非結(jié)構(gòu)性對(duì)數(shù)據(jù)存儲(chǔ)的影有效性驗(yàn)證與維護(hù)。本系統(tǒng)還涉及到的技術(shù)有:MongoDBscrapy1.4用。如Robot協(xié)議等,其中著重對(duì)爬蟲(chóng)架構(gòu)scrapy、非結(jié)構(gòu)化數(shù)據(jù)庫(kù)用。如Robot協(xié)議等,其中著重對(duì)爬蟲(chóng)架構(gòu)scrapy、非結(jié)構(gòu)化數(shù)據(jù)庫(kù)MongoDB。1.522.1robot22.1robotrobots.txtrobot協(xié)議的直接體現(xiàn)。如果將網(wǎng)站視作一個(gè)旅游景點(diǎn),robots.txt互聯(lián)網(wǎng)公司都遵循robot協(xié)議,這體現(xiàn)了互聯(lián)網(wǎng)的一種契約精神。robot協(xié)議,本爬蟲(chóng)系統(tǒng)將有部分?jǐn)?shù)據(jù)無(wú)法爬取到。本系統(tǒng)不是為了某些URL(UniversalResourceIdentifier):通用資源標(biāo)識(shí)符,互聯(lián)網(wǎng)中每一個(gè)資源都由一個(gè)唯一的URL所確定,反之根據(jù)URL可以定位互聯(lián)網(wǎng)上的唯一一個(gè)資源。HTTPHTTPHTMLHTML語(yǔ)言編寫(xiě)的網(wǎng)頁(yè)代碼2.2.2URLURL的網(wǎng)頁(yè)內(nèi)容,得到2.2.3URLURL最URL58同城為例,橫向搜索是指從列表第一頁(yè)開(kāi)始,一次次的向后翻頁(yè),將下一頁(yè)的URL加入到待爬取的隊(duì)列。URL,將其加入到待爬取隊(duì)列中等待爬深度為2。略都有所支持,具體內(nèi)容將在2.5節(jié)中介紹。2.3python2.4準(zhǔn)。若光有XML語(yǔ)言而沒(méi)有一種能夠操作其所描述數(shù)據(jù)的方法,則毫無(wú)用處。[15]必有某種數(shù)據(jù)查詢語(yǔ)言與之配合,這樣X(jué)MLXPath,是XML的路徑語(yǔ)言,它可以用來(lái)確定XPath,是XML的路徑語(yǔ)言,它可以用來(lái)確定XML(可擴(kuò)展標(biāo)記語(yǔ)言)文檔中某個(gè)標(biāo)簽或數(shù)據(jù)的位置,是W3C體系中用于查詢XML文檔的通用標(biāo)準(zhǔn),可以將其看做XML的XPathXML文檔的樹(shù)形結(jié)構(gòu)訪問(wèn)。其在本系統(tǒng)中,XPath所完成的最關(guān)鍵的任務(wù)是數(shù)據(jù)定位,即從爬取到的網(wǎng)頁(yè)中依據(jù)selector、正則表達(dá)式等。scrapyXPath定位,使XPath個(gè)異步IO的框架。由于它的Twisted特性,scrapy框架內(nèi)置實(shí)現(xiàn)了單機(jī)多線程,十分有性,scrapy不支持分布式爬蟲(chóng),如要實(shí)現(xiàn)分布式,需要調(diào)用其他包。scrapy擴(kuò)展功能十分強(qiáng)大。在框架中提供了眾多內(nèi)置模塊,幾乎涵蓋爬蟲(chóng)所需處scrapycssXPath兩種定位方式對(duì)爬取到的網(wǎng)頁(yè)進(jìn)行元素定位,其對(duì)網(wǎng)頁(yè)scrapyscrapy2.5.2scrapy2.5.2scrapy2.22.2scrapyURL交給引擎,接著引URL交由下載器處理,下載器向這些頁(yè)面發(fā)起請(qǐng)求,(在請(qǐng)求過(guò)程中可能使Spiders。,在其中,將根據(jù)頁(yè)面的2.5.3scrapySpiderscrapy框架自身提供的爬蟲(chóng)類,種種Spider,只有某個(gè)地方使用了第二種第一種為scrapy.Spider。Spider是最簡(jiǎn)單的spider。開(kāi)發(fā)者編寫(xiě)的每個(gè)spider類必須繼承自該類。Spiderstart_urls或調(diào)用start_requests方法,并根據(jù)返回的結(jié)果選擇不同的parse方法解析數(shù)據(jù)。蟲(chóng)系統(tǒng)中,該字段必須保證唯一,name可以說(shuō)是整個(gè)框架中最不能修改的一個(gè)字段。allowed_domains,列表類型,當(dāng)中間件中的OffsiteMiddleware為開(kāi)啟狀態(tài)時(shí)(默認(rèn)URL,提供給引擎。后續(xù)爬取的URL將從此開(kāi)始尋找start_request()yield返回。該返回的對(duì)spiderrequestURL時(shí),自動(dòng)調(diào)用該方法,開(kāi)始請(qǐng)求URL。parse():該函數(shù)是整個(gè)類中最關(guān)鍵的方法,也是爬蟲(chóng)邏輯實(shí)現(xiàn)的主要地方。當(dāng)據(jù)以生成器的形式返回給pipeline處理。href鏈接;follow,布爾類型,定義了對(duì)爬取到的URL是否需要繼續(xù)跟進(jìn)。Spiderstart_requestparse兩方法的配合,可以實(shí)現(xiàn)對(duì)頁(yè)面的縱向爬取,通過(guò)start_urls列表,可以直接依據(jù)URL的規(guī)律直接指定橫向爬取。使用CrawlSpider,可以直接由列表頁(yè)的第一頁(yè)開(kāi)始,依據(jù)寫(xiě)好的爬取規(guī)則進(jìn)行橫向與縱向庫(kù)[19;20]。模數(shù)據(jù)時(shí),NoSQL數(shù)據(jù)庫(kù)有著更好的表現(xiàn)。2.6.2MongoDB2.7如robot協(xié)議、模板語(yǔ)言等。數(shù)據(jù)庫(kù)MongoDB333.1.2表3.1對(duì)爬取的目標(biāo)及目標(biāo)狀況進(jìn)行分析。3.1入的了解。表3.1對(duì)爬取的目標(biāo)及目標(biāo)狀況進(jìn)行分析。3.1.3強(qiáng)3.23.23.23.23.33.33.43.44anaconda是一個(gè)開(kāi)源的python4anaconda是一個(gè)開(kāi)源的python發(fā)行版,其中默認(rèn)包含了大量第三方庫(kù)及其相互依scrapyscrapy復(fù)雜的scrapyanaconda4.14.1anacondascrapystartproject4.2scrapy4.1scrapy觀察鏈家網(wǎng)網(wǎng)頁(yè)結(jié)構(gòu)如圖4.2scrapy4.1scrapy觀察鏈家網(wǎng)網(wǎng)頁(yè)結(jié)構(gòu)如圖否遵循robot協(xié)議、是否開(kāi)啟cookie功能等可以將其存儲(chǔ)為csv或其他格式的文件,也可將其存入某數(shù)據(jù)庫(kù)4.34.34.4:4.54.5頁(yè)的后綴為‘/pg2’,且無(wú)論是通過(guò)點(diǎn)擊下一頁(yè),還URL直接輸入‘/pg101’,都無(wú)法訪問(wèn)101頁(yè),說(shuō)明鏈家網(wǎng)默認(rèn)只提供100頁(yè)的二手房房源信息由于其反爬措分嚴(yán)格,短時(shí)間內(nèi)快速訪問(wèn)IP封禁,故本系統(tǒng)只爬取其列表頁(yè),該爬取主Spider類的爬蟲(chóng)即可。設(shè)計(jì)其爬取流程4.64.6Spider類,并對(duì)其關(guān)鍵字進(jìn)行定義4.74.7name字段為唯一name字段為唯一表示此爬蟲(chóng)的字段,開(kāi)啟爬蟲(chóng)時(shí)需要url為網(wǎng)URL的一部分,用列表解析式170之間的數(shù)字,即可完成對(duì)所start_urls.append('/ershoufang/'+dis+'/pg'+str(num)+python極簡(jiǎn)的語(yǔ)法完成了不同區(qū)域下的1100url的生成parse函數(shù)4.84.8parse18行:完成了在item.py中定義的字段類的實(shí)例化,此后將使用該實(shí)例對(duì)象接收數(shù)1939行:使XPath對(duì)頁(yè)面元素進(jìn)行定位,找到其中包含的標(biāo)題、價(jià)格、所處XPath語(yǔ)法規(guī)則:‘//’表示在整個(gè)頁(yè)面中搜索,‘/text()’表示獲取HTML5中該標(biāo)4158行:將抓取到的數(shù)據(jù)item對(duì)象item字段必須item.py文件59行:逐條返item實(shí)例。將數(shù)據(jù)pipeline.py處理。4.1.4pipeline所需完成的任務(wù)是數(shù)據(jù)的收集與存儲(chǔ),主要涉及與數(shù)據(jù)庫(kù)的連接、接收spider文件傳來(lái)的spider文件傳來(lái)的item實(shí)例、對(duì)數(shù)據(jù)進(jìn)行數(shù)據(jù)打包、存入數(shù)據(jù)庫(kù)等操作。其模設(shè)計(jì)圖4.9所示4.9pipeline.py文件中導(dǎo)pythonMongoDB鏈接的第三方pymongo,然后完與數(shù)據(jù)庫(kù)的連接。如4.104.10此時(shí)已連接至‘bishe’庫(kù)的‘esfdemo’表接著在該管道類中定義進(jìn)行數(shù)據(jù)封裝與存入的函數(shù)4.11所示4.1121行:對(duì)數(shù)據(jù)進(jìn)行打包,將其變換Python的字典類型,方便存MongoDB數(shù)據(jù)22行:將數(shù)據(jù)插入數(shù)據(jù)庫(kù)23行23行:process_item函數(shù)默認(rèn)返回item4.1.5包括設(shè)置抓取時(shí)延、禁用cookieUser-AgentIP代理池,接下來(lái)將分別設(shè)置Download_dalay:對(duì)于那些反爬蟲(chóng)力度適中的網(wǎng)站,設(shè)置下載時(shí)延是一個(gè)不錯(cuò)的方法。在中間件文件middleware.py中寫(xiě)入Download_dalay=2,即可完成爬取時(shí)延的cookie:該方法是為了避免網(wǎng)頁(yè)依cookie來(lái)識(shí)別爬蟲(chóng)進(jìn)行封禁。禁cookie在setting.py文件中COOKIE_ENABLEFALSE,即可禁cookie。使用User-Agent池:可在網(wǎng)上搜索到大量的User-Agent,將其寫(xiě)成列表放入中間件文件中,寫(xiě)自己的中間件函數(shù)來(lái)繼承本身架構(gòu)中的User-Agent中間件,在其中使用random函數(shù),每次訪問(wèn)隨機(jī)選User-Agent池中的一User-Agent。再setting.py文Agent4.12所示115以下行:互聯(lián)網(wǎng)上找到User-Agent,將其寫(xiě)入列表。第109110行:初始化。111114行User-Agent的隨機(jī)選擇,并將此加入到請(qǐng)求時(shí)的headers頭中。IP代理池IP代理不像使User-Agent一樣,可以在網(wǎng)上找到大量現(xiàn)批量化獲取免費(fèi)高匿IP代理。該部分的設(shè)計(jì)如圖4.13所示筆者爬取了“西刺代理網(wǎng)”上的免費(fèi)代理,通過(guò)使用telnetlib庫(kù)對(duì)爬取的IP進(jìn)行測(cè)試,過(guò)濾掉無(wú)用的代理IP,將可以使用的IP存入到proxy_list文件中,爬蟲(chóng)將爬取來(lái)的IPIP代理池的形式寫(xiě)入中間件中,實(shí)現(xiàn)IP池的使用。4.14第156行:在請(qǐng)求頭中設(shè)置IP代理。4.15settingUser-Ageent及IP4.1507004.164.164.174.18pythonMongodb4.19MongoPlugin4.31234564.19MongoPlugin4.31234567894.314.314.324.334.455.1操作系統(tǒng):win10軟件版本環(huán)境如表5.15.2。55.1操作系統(tǒng):win10軟件版本環(huán)境如表5.15.2。5.2IP請(qǐng)求網(wǎng)頁(yè),導(dǎo)致出現(xiàn)302錯(cuò)誤,網(wǎng)頁(yè)將爬蟲(chóng)訪問(wèn)的鏈接重定向至無(wú)效頁(yè)面。URL,對(duì)比爬取到的數(shù)據(jù)與數(shù)據(jù)庫(kù)中的數(shù)據(jù),以判斷其抓取的準(zhǔn)確性。測(cè)試用例及測(cè)試過(guò)程如下表5.3。AnacondacustomPycharmx64專業(yè)5.3費(fèi)10分鐘,抓取速度達(dá)到每分鐘約300頁(yè)面,基本滿足需求。5.415.3費(fèi)10分鐘,抓取速度達(dá)到每分鐘約300頁(yè)面,基本滿足需求。5.41是2是3一衛(wèi)采光很好是4是5是66scrapypythonRedisscrapy-redis分布式爬RichardLawson.李斌(譯).用Python[M].Python[M].WesleyChun.孫波翔(譯).Pyth

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論