• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于主題網(wǎng)絡(luò)爬蟲(chóng)的程序設(shè)計(jì)資源庫(kù)建設(shè)研究

      2019-09-20 05:24:08鄭洪源
      大學(xué)教育 2019年9期
      關(guān)鍵詞:網(wǎng)絡(luò)爬蟲(chóng)資源庫(kù)

      鄭洪源

      [摘 要]目前,在國(guó)內(nèi)高校中程序設(shè)計(jì)課程的資源庫(kù)建設(shè)工作尚未普及,大多數(shù)教學(xué)資源存在較為嚴(yán)重的老舊、重復(fù)等問(wèn)題,難以滿足師生日益增長(zhǎng)的對(duì)大量新穎教學(xué)資源的需求。針對(duì)現(xiàn)在流行的網(wǎng)絡(luò)爬蟲(chóng)框架進(jìn)行分析和選擇,在現(xiàn)有框架的基礎(chǔ)上設(shè)計(jì)了一種適合資源庫(kù)建設(shè)的爬蟲(chóng)系統(tǒng),利用爬蟲(chóng)的自動(dòng)化特性完成教學(xué)資源庫(kù)的內(nèi)容獲取及入庫(kù)工作。同時(shí),選用Scrapy-redis對(duì)爬蟲(chóng)進(jìn)行拓展,利用Redis實(shí)現(xiàn)對(duì)目標(biāo)網(wǎng)站資源的分布式爬取,提高獲取資源的速度。選用SimHash算法對(duì)爬取到的資源內(nèi)容進(jìn)行相似度判別,過(guò)濾掉相似度過(guò)高的資源,完成對(duì)資源庫(kù)的增量更新,提高獲取到的資源的質(zhì)量。經(jīng)測(cè)試,研究的系統(tǒng)初步滿足資源庫(kù)建設(shè)的自動(dòng)化需求,能夠獲取有效的教學(xué)資源。

      [關(guān)鍵詞]資源庫(kù);網(wǎng)絡(luò)爬蟲(chóng);分布式爬取;SimHash算法

      [中圖分類號(hào)] G64 [文獻(xiàn)標(biāo)識(shí)碼] A [文章編號(hào)] 2095-3437(2019)09-0076-04

      無(wú)論在國(guó)內(nèi)還是國(guó)外,計(jì)算機(jī)類學(xué)生必修的程序設(shè)計(jì)這門課程對(duì)于教學(xué)資源及時(shí)更新的需求益發(fā)迫切,太過(guò)陳舊的教學(xué)資源和試題不利于對(duì)學(xué)生的培養(yǎng)。由于學(xué)生可以在考前通過(guò)各種途徑獲取歷年考試真題,通過(guò)記憶考試題目便可以獲得高分??碱}陳舊、相似度高,使得考試環(huán)節(jié)的權(quán)威性、有效性大打折扣,這不利于檢驗(yàn)學(xué)生的真實(shí)水平,也會(huì)導(dǎo)致教師教學(xué)資源的缺乏。

      教學(xué)資源庫(kù)的建設(shè)目標(biāo)是以為師生的教與學(xué)提供優(yōu)質(zhì)服務(wù)為最終目的,以整合教學(xué)資源為主要方法,使得教師在備課過(guò)程中更加高效、更加充實(shí),讓學(xué)生在課下學(xué)習(xí)時(shí)更加自由、更加便捷。其發(fā)展趨勢(shì)主要呈以下兩個(gè)特點(diǎn):1.資源選擇便捷化。教師利用本學(xué)科的資源庫(kù)充實(shí)課程內(nèi)容時(shí),將可以更加快捷地對(duì)資源庫(kù)進(jìn)行篩選。節(jié)約教師查找內(nèi)容的時(shí)間,提高獲取合適資源的準(zhǔn)確度,使教師有更多的時(shí)間去創(chuàng)新,反向充實(shí)資源庫(kù),形成良性循環(huán)。2.系統(tǒng)服務(wù)個(gè)性化。針對(duì)教師的教學(xué)內(nèi)容、課程對(duì)學(xué)生等級(jí)、學(xué)習(xí)階段等的不同要求,根據(jù)對(duì)教師信息的匯總和系統(tǒng)識(shí)別,為教師提供滿足自身需求的準(zhǔn)確服務(wù),提高系統(tǒng)資源的可用性。

      一、目的和意義

      本研究利用主題網(wǎng)絡(luò)爬蟲(chóng)不需要訪問(wèn)數(shù)據(jù)庫(kù),自動(dòng)抓取頁(yè)面信息的特性,對(duì)程序設(shè)計(jì)資源庫(kù)的建設(shè)進(jìn)行探索和實(shí)踐[1]。通過(guò)對(duì)目標(biāo)網(wǎng)站的分析和爬取,實(shí)現(xiàn)資源聚合,完成資源庫(kù)在內(nèi)容上從無(wú)到有的突破。通過(guò)對(duì)當(dāng)下流行的一些技術(shù)進(jìn)行實(shí)際的開(kāi)發(fā)和應(yīng)用,為以后構(gòu)建功能更加完善的資源庫(kù)系統(tǒng)提供非常有用的實(shí)踐經(jīng)驗(yàn)。同時(shí),本文雖然是針對(duì)程序設(shè)計(jì)課程資源庫(kù)建設(shè)開(kāi)展研究,但研究方法考慮通用性,只需通過(guò)主題庫(kù)和爬取規(guī)則更新,就可以適用于其他課程的資源建設(shè)中。

      二、系統(tǒng)總體架構(gòu)

      本系統(tǒng)被設(shè)計(jì)為三個(gè)模塊。分別為:爬蟲(chóng)模塊,API模塊和數(shù)據(jù)可視化模塊,系統(tǒng)架構(gòu)如圖1所示。

      本系統(tǒng)通過(guò)爬取特定的URL,下載其標(biāo)識(shí)的資源頁(yè)面,從互聯(lián)網(wǎng)中獲取所需的信息。并在爬蟲(chóng)模塊中借用Redis進(jìn)行信息文本的清洗、組合、判重等操作。最后將合格的資源存入MongoDB數(shù)據(jù)庫(kù)中,API則根據(jù)數(shù)據(jù)可視化的要求,通過(guò)對(duì)MongoDB數(shù)據(jù)庫(kù)中的已存信息進(jìn)行查詢等操作,實(shí)現(xiàn)對(duì)應(yīng)API功能[2]。數(shù)據(jù)可視化模塊則同過(guò)調(diào)用API獲取數(shù)據(jù),在瀏覽器中對(duì)數(shù)據(jù)進(jìn)行加工和展示,使師生用戶可以無(wú)障礙使用本系統(tǒng)。

      三、爬蟲(chóng)模塊設(shè)計(jì)

      爬蟲(chóng)模塊在Scrapy和Scrapy-redis組件的基礎(chǔ)上,進(jìn)行功能拓展和實(shí)現(xiàn)。又分為多個(gè)子模塊,包括:控制子模塊,url重復(fù)過(guò)濾模塊,頁(yè)面解析模塊,文本相似過(guò)濾模塊,存儲(chǔ)模塊[3]。整個(gè)模塊結(jié)構(gòu)如圖2所示。

      (一)控制子模塊

      本模塊是在Scrapy-Redis組件中所實(shí)現(xiàn)的調(diào)度器、爬蟲(chóng)等類的基礎(chǔ)上,通過(guò)定義重載一些方法實(shí)現(xiàn)對(duì)爬蟲(chóng)的個(gè)性化控制[4]。其控制流程如圖3所示。

      爬蟲(chóng)啟動(dòng)后,會(huì)首先運(yùn)行spider類中的start_requests方法,在該方法中,我們進(jìn)行主從模式的判斷,如果是主模式,則要進(jìn)一步判斷是否已有Cookies,如果沒(méi)有,則需要同過(guò)Selenium模擬瀏覽器登錄目標(biāo)網(wǎng)站獲取Cookies,并將Cookies存儲(chǔ)于Redis中,共享給從模式啟動(dòng)的爬蟲(chóng)使用。Cookies生成之后,主模式下會(huì)生成待爬取的初始請(qǐng)求隊(duì)列,然后進(jìn)入頁(yè)面的爬取解析循環(huán)。對(duì)于從模式啟動(dòng)的爬蟲(chóng),則直接進(jìn)入頁(yè)面的爬取解析循環(huán),如果沒(méi)有待爬取的請(qǐng)求,則等待。經(jīng)過(guò)頁(yè)面解析之后,將提取后的結(jié)構(gòu)化數(shù)據(jù)通過(guò)存儲(chǔ)子模塊進(jìn)行存儲(chǔ)。其中,對(duì)于新產(chǎn)生的URL和新提取的數(shù)據(jù)都要經(jīng)過(guò)重復(fù)過(guò)濾,合格的URL和數(shù)據(jù)才能進(jìn)入下一步流程當(dāng)中[5]。

      (二)URL重復(fù)過(guò)濾模塊

      該模塊主要實(shí)現(xiàn)了Bloom Filter算法,并把它與實(shí)際爬蟲(chóng)應(yīng)用結(jié)合起來(lái)。將Scrapy-redis原有的利用Redis集合特性的去重模塊進(jìn)行替換。算法和調(diào)用接口的具體實(shí)現(xiàn)主要在DBloomFilter類中完成,該類類圖如圖4所示。

      其中,SEEDS屬性是Bloom Filter算法所需要的哈希函數(shù)的隨機(jī)種子。m是位數(shù)組的位數(shù),k是哈希函數(shù)的個(gè)數(shù),conn是Redis連接的實(shí)例,key是Redis中存儲(chǔ)位數(shù)組的鍵名,由于Redis中最大只支持512M的位數(shù)組,為了在海量數(shù)據(jù)下依然能保證較高的正確率,將超過(guò)512M大小的位數(shù)組進(jìn)行分塊處理,mem屬性是512M分塊的個(gè)數(shù),blocknum是每個(gè)分塊的編號(hào)[6]。

      init方法初始化Bloom Filter所需的各種參數(shù)m,k,conn 等。

      getHashs則是對(duì)傳進(jìn)來(lái)的參數(shù)使用k個(gè)不同的哈希函數(shù),獲得k個(gè)哈希值,即該URL在位數(shù)組中的位置。

      isExist方法是提供給爬蟲(chóng)判斷URL是否已經(jīng)爬取了的方法,接受需要去重的數(shù)據(jù)作為參數(shù),調(diào)用getHashs方法獲得URL的k個(gè)哈希值,并判斷位數(shù)組中是否已經(jīng)存在。存在返回True,不存在返回False。

      add方法是提供給其他模塊向位數(shù)組中加入該URL記錄的方法。

      (三)頁(yè)面解析模塊

      頁(yè)面解析模塊主要是對(duì)Spider類的拓展和實(shí)現(xiàn)。類圖如圖5所示。

      頁(yè)面解析模塊主要是兩個(gè)解析方法,listParse方法主要解析爬取來(lái)的列表頁(yè)面。根據(jù)列表頁(yè)中的資源id再進(jìn)行構(gòu)造對(duì)應(yīng)資源的URL。problemParse則是對(duì)具體資源頁(yè)面的解析,通過(guò)Scrapy提供Item解決方案,提取組合成結(jié)構(gòu)化的數(shù)據(jù),暫時(shí)組織在Item類的實(shí)例中。

      (四)文本相似過(guò)濾模塊

      該模塊是基于Scapy提供的Item pipelies組件機(jī)制實(shí)現(xiàn)的。通過(guò)編寫pipeline組件,并規(guī)定它的執(zhí)行順序,實(shí)現(xiàn)對(duì)頁(yè)面解析模塊獲得的結(jié)構(gòu)化數(shù)據(jù)進(jìn)行詳細(xì)過(guò)濾[7]。頁(yè)面解析模塊最終生成包含數(shù)據(jù)的Item實(shí)例,并把它轉(zhuǎn)交這Item pipeline中,pipeline組件有序地對(duì)Item進(jìn)行處理。

      DDupefilterPipeline是實(shí)現(xiàn)的組件類。當(dāng)Item通過(guò)時(shí),它調(diào)用Simhash類提供的方法,對(duì)Item中的特定字段進(jìn)行相似度判別。對(duì)于擁有和已經(jīng)入庫(kù)的數(shù)據(jù)較高相似度的Item將被丟棄。只有相似度合格的Item才能進(jìn)入下一個(gè)pipeline組件中。

      SimHash類是實(shí)現(xiàn)SimHash算法的工具類。它的類圖如圖6所示。

      該類的兩個(gè)屬性會(huì)在初始化時(shí)賦值,hashBitNum是生成的哈希值的長(zhǎng)度。maxKeywordWeight是關(guān)鍵詞權(quán)重值的最大值[8]。

      simHash方法通過(guò)調(diào)用jieba分詞的分詞方法,對(duì)文本content進(jìn)行分詞,并從中提取帶有權(quán)重值的關(guān)鍵詞列表,把得到的列表交給hashFeature方法。在hashFeature方法中,實(shí)現(xiàn)了SimHash算法里所講的流程,最終得到了該文本的SimHash值。

      is_equal方法是用來(lái)判斷兩個(gè)文本的相似度的,通過(guò)調(diào)用hmDistance方法,得到兩個(gè)SimHash值的漢明距離,來(lái)判斷相似度是否超過(guò)給定的上限。如果超過(guò)則返回True,否則返回False。

      hashFunc和tokenizerFunc方法則是算法需要的哈希函數(shù)方法和分詞方法[9]。

      在具體去重中,DDupefilterPipeline類的process_item方法會(huì)先調(diào)用simHash方法,獲取Item中給定字段的SimHash值。判斷這個(gè)值是否已經(jīng)在Redis數(shù)據(jù)庫(kù)中,如果不存在則調(diào)用is_equal方法,與Redis數(shù)據(jù)庫(kù)中的每一個(gè)SimHash進(jìn)行對(duì)比,相似度高于上限的直接丟棄,相似度合格的則把該SimHash值存入Redis中,并將該Iten傳入下一個(gè)pipeline組件中。

      (五)存儲(chǔ)子模塊

      和文本相似過(guò)濾模塊相似,存儲(chǔ)子模塊通過(guò)pipeline組件,對(duì)經(jīng)過(guò)去重的Item進(jìn)行存儲(chǔ)操作。DMongodbPipeline類通過(guò)調(diào)用pymongo提供的API接口,完成對(duì)MongoDB的連接等操作。完成對(duì)有效數(shù)據(jù)的插入。

      由于MongoDB是非關(guān)系型數(shù)據(jù)庫(kù),和傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)相比,它是以BSON文檔作為基本的數(shù)據(jù)模型,沒(méi)有表的概念。在MongoDB中,一個(gè)數(shù)據(jù)庫(kù)可以包含多個(gè)集合,一個(gè)集合包含了同類文檔,文檔中又可以嵌套文檔、數(shù)組和文檔數(shù)組[10]。

      在本系統(tǒng)中MongoDB數(shù)據(jù)庫(kù)主要有兩個(gè)集合:problems和knowledgePoints。

      四、API模塊

      API模塊使用Koa2.js框架進(jìn)行開(kāi)發(fā),為數(shù)據(jù)可視化模塊提供獲取數(shù)據(jù)的API接口。它的主要功能就是接收客戶端應(yīng)用發(fā)來(lái)的http請(qǐng)求,從中提取有效安全的參數(shù),在數(shù)據(jù)庫(kù)中完成數(shù)據(jù)的查詢,并將數(shù)據(jù)返回給客戶端應(yīng)用。

      Koa2.js框架是基于NodeJS平臺(tái)的下一代Web開(kāi)發(fā)框架,是由 Express 原班人馬打造的,致力于成為一個(gè)更小、更富有表現(xiàn)力、更健壯的 Web 框架。 使用JavaScript編寫應(yīng)用時(shí),會(huì)面臨重復(fù)煩瑣的“回調(diào)地獄”問(wèn)題。在Koa2中通過(guò)組合不同的 generator,可以避免這一問(wèn)題,并極大地提升錯(cuò)誤處理的效率。Koa2為了保證自身的簡(jiǎn)潔性,自身內(nèi)核除了關(guān)鍵內(nèi)容以外,把路由、解析等功能都被用中間件的形式來(lái)實(shí)現(xiàn),它僅僅提供了一個(gè)輕量?jī)?yōu)雅的函數(shù)庫(kù),使開(kāi)發(fā)者在編寫 Web 應(yīng)用更加得心應(yīng)手。

      整個(gè)流程看起來(lái)很像洋蔥,但并不是一層一層地執(zhí)行,而是以中間件調(diào)用next方法的地方為界,當(dāng)請(qǐng)求Request傳來(lái)時(shí),先一次執(zhí)行每個(gè)中間件next之前的部分,當(dāng)下一層中間件執(zhí)行完后,再執(zhí)行本層next后的部分[11]。

      通過(guò)在koa-router中間件中定義API路由,并指定匹配到該路由時(shí)的應(yīng)該執(zhí)行的回調(diào)函數(shù)。在回調(diào)函數(shù)中進(jìn)行數(shù)據(jù)庫(kù)查詢,并對(duì)該請(qǐng)求進(jìn)行響應(yīng),返回?cái)?shù)據(jù)。所有的回調(diào)函數(shù)按功能被組織在特定的Controller類中。

      ProblemController類主要完成了目前階段所有API的回調(diào)函數(shù)的定義和實(shí)現(xiàn)。其類圖如圖7所示。

      getProblemByType方法中實(shí)現(xiàn)了按條件對(duì)數(shù)據(jù)庫(kù)進(jìn)行檢索,并利用MongoDB的skip、limit、sort等方法以及_id的特性,實(shí)現(xiàn)了分頁(yè)查詢,比單獨(dú)使用skip和limit方法實(shí)現(xiàn)分頁(yè)有了更好的性能,尤其是數(shù)據(jù)量龐大時(shí)。getKnowledgePoints則是返回了當(dāng)前知識(shí)點(diǎn)的子知識(shí)點(diǎn)。

      五、系統(tǒng)測(cè)試

      關(guān)于爬取速度方面,經(jīng)測(cè)試,在單機(jī)條件下運(yùn)行,爬蟲(chóng)持續(xù)運(yùn)行無(wú)報(bào)錯(cuò),穩(wěn)定持續(xù)爬取數(shù)據(jù)。90分鐘入庫(kù)數(shù)據(jù)3140條,平均35條/min。

      在爬取完整性方面,針對(duì)某網(wǎng)站最終需要爬取5835個(gè)頁(yè)面,共爬取5835個(gè)頁(yè)面,實(shí)現(xiàn)全部爬取無(wú)遺漏。最終數(shù)據(jù)庫(kù)有4886條數(shù)據(jù),有949條數(shù)據(jù)被判定相似或重復(fù)。

      針對(duì)相似度過(guò)濾方面,經(jīng)測(cè)試爬蟲(chóng)系統(tǒng)的log信息提示丟棄掉了約5%和已入庫(kù)文本相似度極高的文本,經(jīng)過(guò)系統(tǒng)比對(duì)規(guī)則確認(rèn),這部分確實(shí)屬于重復(fù)資源,系統(tǒng)予以舍棄,不做重復(fù)入庫(kù)。當(dāng)數(shù)據(jù)庫(kù)中存入了多條相似,但要求實(shí)現(xiàn)不同函數(shù)的問(wèn)題,證明文本相似過(guò)濾模塊運(yùn)行性能在預(yù)期內(nèi),沒(méi)有出現(xiàn)不能容忍的高誤判率。

      六、總結(jié)

      本文采用了穩(wěn)定性及拓展性良好的Scrapy/Scrapy-redis框架,實(shí)現(xiàn)對(duì)數(shù)據(jù)的清洗,去重以及入庫(kù)等操作。運(yùn)用Downloader Middleware機(jī)制對(duì)發(fā)出的爬取請(qǐng)求進(jìn)行定制,同時(shí)對(duì)服務(wù)器的響應(yīng)進(jìn)行識(shí)別,對(duì)不同的響應(yīng)狀態(tài)碼進(jìn)行不同的處理。為了實(shí)現(xiàn)分布式爬取而采取的Redis數(shù)據(jù)庫(kù)操作的原子性和基于內(nèi)存的特性發(fā)揮了極大的性能優(yōu)勢(shì)。經(jīng)測(cè)試,資源庫(kù)系統(tǒng)各方面表現(xiàn)穩(wěn)定,擁有良好的可拓展性,滿足設(shè)計(jì)需求。

      值得進(jìn)一步探索改進(jìn)之處主要表現(xiàn)在,目標(biāo)網(wǎng)站的反爬機(jī)制對(duì)爬蟲(chóng)系統(tǒng)有一定限制。目標(biāo)網(wǎng)站為限制同一IP在短時(shí)間內(nèi)的請(qǐng)求數(shù),為了保證爬取的準(zhǔn)確度,爬蟲(chóng)不得不進(jìn)行自我休眠,限制了爬取速度。可以通過(guò)增加機(jī)器、選用優(yōu)秀穩(wěn)定的代理池去解決。

      [ 參 考 文 獻(xiàn) ]

      [1] 陳永彬. 基于聚焦爬蟲(chóng)技術(shù)的教學(xué)資源搜集與自動(dòng)整理方法研究[D]. 東北師范大學(xué),2011.

      [2] 陳昭穩(wěn). 基于網(wǎng)絡(luò)爬蟲(chóng)軟件建設(shè)主題網(wǎng)絡(luò)信息資源庫(kù)的研究——以高鐵網(wǎng)絡(luò)信息資源庫(kù)建設(shè)為例[J]. 安徽電子信息職業(yè)技術(shù)學(xué)院學(xué)報(bào),2014(6):12-14.

      [3] 郭小丹. 幾種開(kāi)源網(wǎng)絡(luò)爬蟲(chóng)功能比較[J]. 黑龍江科技信息,2015(25):154.

      [4] 劉建明. 垂直搜索引擎中的主題爬蟲(chóng)技術(shù)研究[D].廣東工業(yè)大學(xué),2013.

      [5] 金斯特. 基于Web 挖掘的主題搜索引擎網(wǎng)頁(yè)抓取策略的研究[D]. 浙江工業(yè)大學(xué),2014.

      [6] Yuhao Fan. Design and Implementation of Distributed Craw-ler System Based on Scrapy[J]. IOP Conference Series:Ea-rth and Environmental Science,2018,108(4).

      [7] Luo L, Guo D, Ma R T B, et al. Optimizing Bloom Filter: Challenges, Solutions, and Comparisons[J]. arXiv:1804.04777v2[CS.DS] 7 Jan 2019:10-32.

      [8] Manku G S,Jain A,Sarma A D. Detecting near-duplicates for web crawling[C] International Conference on World W-ide Web. ACM,2007:141-150.

      [9] Jain A, Manku G S. Near-duplicate document detection for web crawling: US,US8140505[P]. 2012.

      [10] Haber,Itamar. MongoDB and Redis pair volume with velocity[J]. InfoWorld.com,2015.

      [11] 程桂花,沈煒,何松林,等. Node.js中Express框架路由機(jī)制的研究[J]. 工業(yè)控制計(jì)算機(jī),2016(8):101-102.

      [責(zé)任編輯:黃緊德]

      猜你喜歡
      網(wǎng)絡(luò)爬蟲(chóng)資源庫(kù)
      廣州園科院木棉野牡丹種質(zhì)資源庫(kù)入選國(guó)家林木種質(zhì)資源庫(kù)
      園林科技(2021年3期)2021-04-03 04:33:46
      健身氣功開(kāi)放課程資源庫(kù)建設(shè)研究
      貴州●石斛種質(zhì)資源庫(kù)
      基于共享資源庫(kù)的混合式教學(xué)考核模式研究
      電子制作(2017年10期)2017-04-18 07:22:55
      煉鐵廠鐵量網(wǎng)頁(yè)數(shù)據(jù)獲取系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
      高中歷史信息化教育資源庫(kù)應(yīng)用探索
      福建基礎(chǔ)教育教學(xué)資源庫(kù)建設(shè)研究——以福建基礎(chǔ)教育網(wǎng)資源庫(kù)為例
      基于社會(huì)網(wǎng)絡(luò)分析的權(quán)威網(wǎng)頁(yè)挖掘研究
      主題搜索引擎中網(wǎng)絡(luò)爬蟲(chóng)的實(shí)現(xiàn)研究
      淺析如何應(yīng)對(duì)網(wǎng)絡(luò)爬蟲(chóng)流量
      郁南县| 青海省| 义马市| 榆社县| 兴文县| 古交市| 江门市| 成安县| 韶山市| 图片| 广德县| 建昌县| 苍梧县| 青冈县| 通江县| 阿拉尔市| 句容市| 东方市| 石嘴山市| 中阳县| 启东市| 阳江市| 宜兴市| 金寨县| 通河县| 长宁区| 离岛区| 孙吴县| 哈尔滨市| 岳普湖县| 五原县| 龙州县| 长白| 长丰县| 湟源县| 许昌市| 贺兰县| 南郑县| 怀化市| 历史| 开封县|