版權(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ù)爬??;非結(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:開源爬蟲架 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ǔ)言在爬蟲設(shè)計(jì)與實(shí)現(xiàn)中具有獨(dú)特的優(yōu)勢(shì)。首先,pythonscrapy等一些其python依然提供了眾多成熟的第三方庫(kù)如request、Beautiful解析庫(kù)等等,其中也集成python1.2.2分鐘的瀏覽量為1.2萬(wàn),真實(shí)用戶僅有500人左右,爬蟲流量占比峰值曾達(dá)到了headers。headersHTTP協(xié)議的一部分,是區(qū)分人與機(jī)器的最第二,IP限制。爬蟲與人訪問(wèn)網(wǎng)頁(yè)最大的區(qū)別在于,爬蟲一般完成的是短時(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ì)爬蟲架構(gòu)scrapy、非結(jié)構(gòu)化數(shù)據(jù)庫(kù)用。如Robot協(xié)議等,其中著重對(duì)爬蟲架構(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é)議,本爬蟲系統(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ǔ)言編寫的網(wǎng)頁(yè)代碼2.2.2URLURL的網(wǎng)頁(yè)內(nèi)容,得到2.2.3URLURL最URL58同城為例,橫向搜索是指從列表第一頁(yè)開始,一次次的向后翻頁(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文檔的樹形結(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不支持分布式爬蟲,如要實(shí)現(xiàn)分布式,需要調(diào)用其他包。scrapy擴(kuò)展功能十分強(qiáng)大。在框架中提供了眾多內(nèi)置模塊,幾乎涵蓋爬蟲所需處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框架自身提供的爬蟲類,種種Spider,只有某個(gè)地方使用了第二種第一種為scrapy.Spider。Spider是最簡(jiǎn)單的spider。開發(fā)者編寫的每個(gè)spider類必須繼承自該類。Spiderstart_urls或調(diào)用start_requests方法,并根據(jù)返回的結(jié)果選擇不同的parse方法解析數(shù)據(jù)。蟲系統(tǒng)中,該字段必須保證唯一,name可以說(shuō)是整個(gè)框架中最不能修改的一個(gè)字段。allowed_domains,列表類型,當(dāng)中間件中的OffsiteMiddleware為開啟狀態(tài)時(shí)(默認(rèn)URL,提供給引擎。后續(xù)爬取的URL將從此開始尋找start_request()yield返回。該返回的對(duì)spiderrequestURL時(shí),自動(dòng)調(diào)用該方法,開始請(qǐng)求URL。parse():該函數(shù)是整個(gè)類中最關(guān)鍵的方法,也是爬蟲邏輯實(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è)開始,依據(jù)寫好的爬取規(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è)開源的python4anaconda是一個(gè)開源的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é)議、是否開啟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類的爬蟲即可。設(shè)計(jì)其爬取流程4.64.6Spider類,并對(duì)其關(guān)鍵字進(jìn)行定義4.74.7name字段為唯一name字段為唯一表示此爬蟲的字段,開啟爬蟲時(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ì)于那些反爬蟲力度適中的網(wǎng)站,設(shè)置下載時(shí)延是一個(gè)不錯(cuò)的方法。在中間件文件middleware.py中寫入Download_dalay=2,即可完成爬取時(shí)延的cookie:該方法是為了避免網(wǎng)頁(yè)依cookie來(lái)識(shí)別爬蟲進(jìn)行封禁。禁cookie在setting.py文件中COOKIE_ENABLEFALSE,即可禁cookie。使用User-Agent池:可在網(wǎng)上搜索到大量的User-Agent,將其寫成列表放入中間件文件中,寫自己的中間件函數(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,將其寫入列表。第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文件中,爬蟲將爬取來(lái)的IPIP代理池的形式寫入中間件中,實(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è)將爬蟲訪問(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025湖南省演出公司公開招聘2人備考考試試題及答案解析
- 2025年甘肅省甘南州碌曲縣選調(diào)工作人員和項(xiàng)目人員26人擇優(yōu)入編考試備考筆試試題及答案解析
- 深度解析(2026)《GBT 26007-2017彈性元件和接插件用銅合金帶箔材》
- 深度解析(2026)《GBT 25947-2010鋁土礦 散裝料水分含量的測(cè)定》(2026年)深度解析
- 2025特能集團(tuán)審計(jì)中心工作人員招聘模擬筆試試題及答案解析
- 深度解析(2026)《GBT 25818-2010酸性艷藍(lán)P-RL(C.I.酸性藍(lán)350)》
- 深度解析(2026)《GBT 25662-2010數(shù)控弧齒錐齒輪銑齒機(jī) 精度檢驗(yàn)》(2026年)深度解析
- 2025下半年廣東肇慶市懷集縣事業(yè)單位招聘14人考試備考題庫(kù)及答案解析
- 2025廣西百色市西林縣消防救援大隊(duì)政府專職消防員招聘15人備考考試試題及答案解析
- 2025吉林白城市鎮(zhèn)賚縣事業(yè)單位招聘(含專項(xiàng)招聘高校畢業(yè)生)及基層治理專干47人備考考試題庫(kù)及答案解析
- 小學(xué)數(shù)學(xué)教學(xué)中融入中國(guó)傳統(tǒng)文化的實(shí)踐研究
- 2020-2025年中國(guó)激光測(cè)量?jī)x行業(yè)投資研究分析及發(fā)展前景預(yù)測(cè)報(bào)告
- 企業(yè)安全生產(chǎn)法律法規(guī)知識(shí)培訓(xùn)課件
- 神話故事民間故事《劈山救母》繪本課件
- 5.2.1三角函數(shù)的概念課件-高一上學(xué)期數(shù)學(xué)人教A版(2019)必修第一冊(cè)
- 甲亢性心臟病估護(hù)理查房
- 臨床輸血管理委員會(huì)年終的工作總結(jié)
- 韋萊韜悅-東方明珠新媒體集團(tuán)一體化職位職級(jí)體系方案-2018
- 電力通道維護(hù)及管理方案
- 《體育與健康》課程標(biāo)準(zhǔn)(高職)
- 走近核科學(xué)技術(shù)學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
評(píng)論
0/150
提交評(píng)論