• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于Scrapy、Spark和Hive的網(wǎng)絡(luò)數(shù)據(jù)采集、存儲與分析研究

    2020-03-10 22:36:46劉守唯陳豪
    科學(xué)與財富 2020年33期

    劉守唯 陳豪

    摘 要:本文主要利用目前主流的大數(shù)據(jù)工具,將網(wǎng)絡(luò)上的招聘職位數(shù)據(jù)采集之后,經(jīng)過清洗整理等步驟,存入大數(shù)據(jù)倉庫中以備后續(xù)調(diào)用。研究記錄下整個過程及過程中遇到的問題和解決方案:采用Scrapy開源采集包,編寫Python采集程序,將數(shù)據(jù)成功存入數(shù)據(jù)倉庫Hive中,利用Sqoop將數(shù)據(jù)傳輸?shù)組ySQL,為后期數(shù)據(jù)展示做準(zhǔn)備。該案例的典型工作過程與遇到的典型問題,可以為其他類似場合下采集、存儲和分析其他種類網(wǎng)絡(luò)數(shù)據(jù)的研究提供一些見解。

    關(guān)鍵詞:Scrapy;Sqoop;Hive;大數(shù)據(jù)采集;大數(shù)據(jù)存儲

    ABSTRACT: This paper mainly uses the current mainstream big data tools to collect the recruitment position data on the network, and then through the cleaning and sorting steps, stores them into the big data warehouse for subsequent calls. Research and record the whole process and the problems encountered in the process and solutions: using scrapy open source collection package, writing Python collection program, successfully storing the data in hive data warehouse, using sqoop to transfer the data to MySQL, preparing for the later data display. The typical working process and typical problems of this case can provide some insights for the research of collecting, storing and analyzing other kinds of network data in other similar situations.

    Keywords: scratch; sqoop; hive; big data acquisition; big data storage

    目前,計算機領(lǐng)域大數(shù)據(jù)技術(shù)發(fā)展迅猛,海量數(shù)據(jù)資源作為大數(shù)據(jù)技術(shù)的“礦藏”,是該技術(shù)能夠蓬勃發(fā)展的物質(zhì)材料基礎(chǔ)。通過網(wǎng)絡(luò)采集數(shù)據(jù)是典型的大數(shù)據(jù)采集的手段之一,采集到的數(shù)據(jù)還需要“提純”,通過清洗步驟去除掉無用的空數(shù)據(jù)、錯數(shù)據(jù)及無效數(shù)據(jù),然后存入數(shù)據(jù)倉庫,為后續(xù)的數(shù)據(jù)開發(fā)提供材料。導(dǎo)師給我們的選題,是編寫Python采集程序,使用主流的Scrapy技術(shù)進(jìn)行數(shù)據(jù)采集,生成csv本地文件,然后用Spark對csv文件進(jìn)行清洗;在Hive中利用create語句建立內(nèi)部表的數(shù)據(jù)結(jié)構(gòu),之后用load命令將清洗后的csv導(dǎo)入到Hive中完成數(shù)據(jù)存儲。接下來就是編寫HQL語句對數(shù)據(jù)進(jìn)行分析從而生成臨時顯示表,之后將該臨時表保存hive中內(nèi)部表,然后在MySQL中建立對應(yīng)的表結(jié)構(gòu),利用Sqoop將Hive里的數(shù)據(jù)傳輸進(jìn)來,完成流程。在這個過程中我們解決掉各種問題,將的整合后統(tǒng)計數(shù)據(jù)成功提取到了結(jié)構(gòu)化存儲中。導(dǎo)師給予的這個研究案例,是具有典型特征的工作過程,與解決掉的典型問題一起,可以應(yīng)用在其他類似場合下采集與存儲其他種類網(wǎng)絡(luò)數(shù)據(jù)的工作中。

    1網(wǎng)絡(luò)數(shù)據(jù)采集

    Scrapy是使用最廣泛的網(wǎng)絡(luò)數(shù)據(jù)采集開源包之一。利用PyCharm IDE,配合安裝python3以上版本,并導(dǎo)入Scrapy的包。同時需要配合的重要的庫有:XML的處理工具包lxml,用于代碼結(jié)構(gòu)解析;HTTP 請求urllib 庫,用于批量解析網(wǎng)址;fake_useragent庫,用于仿造瀏覽器請求;線程庫,用于多現(xiàn)程同時訪問提高采集效率。設(shè)計實現(xiàn)思路:仿造請求頭訪問進(jìn)入目標(biāo)網(wǎng)站;爬取目標(biāo)網(wǎng)站各職位信息url;遍歷所有職位url再爬取各職位詳細(xì)信息url;向服務(wù)器發(fā)送請求并保存數(shù)據(jù)。具體來說,設(shè)定網(wǎng)址http://www.*****.com/zhaopin,偽造請求頭:headers = { ?'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:72.0) Gecko/20100101 Firefox/72.0'},發(fā)送含有偽造請求頭的請求,服務(wù)器返回response = requests.get(start_url,headers = HEADERS).text,再用lxml進(jìn)行樹狀解析response = etree.HTML(response),抽取樹狀結(jié)構(gòu)中的有效數(shù)據(jù),傳遞到變量中。該過程循環(huán)多次,最終將所有有效數(shù)據(jù)存入文件中。

    實現(xiàn)時,需添加隨機時間間隔來防止服務(wù)器屏蔽:通過Scrapy的settings文件的參數(shù)來實現(xiàn),DOWNLOAD_DELAY = random.randint(2, 5),就是2秒到5秒鐘隨機抽取休息時間,模擬真實人的訪問頻率。要通過多線程來提高采集速度,具體到Scrapy中使用多并發(fā)、異步IO來實現(xiàn),關(guān)鍵語句為:CONCURRENT_REQUESTS = 16 #多線程。還要注意的一個問題是:Scrapy默認(rèn)是不采集網(wǎng)站不希望我們訪問的結(jié)點的,但往往有效數(shù)據(jù)就處于結(jié)點之上,所以必須關(guān)閉機器人協(xié)議,具體操作為修改設(shè)置:ROBOTSTXT_OBEY = False。最后,將采集到的數(shù)據(jù)寫入文件,通過Scrapy的items.py文件中,定義要保存的各個字段的名稱,之后再piplines的功能,打開要寫入的文件,調(diào)用process_item函數(shù)來對數(shù)據(jù)進(jìn)行保存,寫入完畢后用close_spider函數(shù)關(guān)閉文件。

    五河县| 富蕴县| 昂仁县| 日土县| 容城县| 宁安市| 东安县| 南汇区| 兰溪市| 乐陵市| 安吉县| 泰兴市| 蛟河市| 武邑县| 酉阳| 绥德县| 富川| 石林| 扶绥县| 咸宁市| 杭州市| 亚东县| 克东县| 闻喜县| 疏附县| 万州区| 拜泉县| 德庆县| 平定县| 镇原县| 聊城市| 定结县| 罗源县| 建水县| 北票市| 宁南县| 青浦区| 利辛县| 芒康县| 杭锦后旗| 伊宁市|