先說(shuō)下需求: 最近打算搜集點(diǎn)源數(shù)據(jù),,豐富下生活,。嗯,最近看到One這個(gè)APP蠻好的,。每天想你推送一張圖和一段話,。很喜歡,簡(jiǎn)單不復(fù)雜,。而我想要把所有的句子都保存下來(lái),,又不想要每個(gè)頁(yè)面都去手動(dòng)查看。因此,,就有了Python,。之前有點(diǎn)Python基礎(chǔ),不過(guò)沒(méi)有深入?,F(xiàn)在也沒(méi)有深入,,用哪學(xué)哪吧。 網(wǎng)站的內(nèi)容是這樣的,,我想要圖片和這段話: one (一) 一臺(tái)MAC電腦 (二)Python環(huán)境搭建(所有命令都是在terminal中輸入的)
參考這里 (http:///blog/2014/04/24/easy-web-scraping-with-python/) (三)分析 目的:找出三個(gè)內(nèi)容所在的網(wǎng)頁(yè)標(biāo)簽的位置,,然后將它們提取出來(lái),。 網(wǎng)址:http:///one/1293 谷歌瀏覽器,右鍵->顯示網(wǎng)頁(yè)源代碼,然后就會(huì)彈出一堆HTML的東西了,。這樣的: 網(wǎng)頁(yè)源文件 我想要的內(nèi)容是這段話:“即使熱戀者的情感是錯(cuò)覺(jué),、幻象或自戀行為,那又何妨,,所謂人生就是一段不斷追求情愛(ài)的路程,。 by 森山大道”。它在圖中畫紅線的地方,。在標(biāo)簽里的中,,之后會(huì)用到,先往下看,。 圖片的鏈接在哪里,?顯然不在中,往下找,,然后就在中,,發(fā)現(xiàn)2處和圖片類似的鏈接??磮D 圖片鏈接地址 哪個(gè)鏈接是呢,,點(diǎn)擊去,發(fā)現(xiàn)后一個(gè)鏈接,,也就是67行這個(gè)img標(biāo)簽的鏈接是,。 然后,我還想知道哪一天的圖和文字,。嗯,,在回到標(biāo)簽里,,很明顯有個(gè)title, 里面的東西就是我們要的。這樣:
(四)python編碼 想要抓取網(wǎng)頁(yè)上的內(nèi)容,,又不想自己去解析HTML,,只好求助萬(wàn)能的Google了,。然后就找到了上面的鏈接,。主要有兩個(gè)工具:request加載網(wǎng)頁(yè),,BeautifulSoup4解析HTML。 首先,,抓取我們需要的哪三個(gè)內(nèi)容: 進(jìn)入python環(huán)境,,然后敲入下面的代碼:
這樣,,就可以將網(wǎng)頁(yè)信息存儲(chǔ)到soup中了,。你可以敲入print soup試試。 接下來(lái),,我們獲得中的數(shù)字1271,。怎么獲得呢,beautifulsoup4教程,提供了很好的方法,,可以通過(guò)tag查找得到title的內(nèi)容,,然后截取字符串。termianl中輸入:
title是tag值,,string是tag=title的字符串的值,,也就是tag,所以不用做判斷,,直接獲取即可,。 接下來(lái),獲取一段話,。 要截取的內(nèi)容 這段話在中,,而這里又有太多的了,怎么辦,。這里要用到select方法了,,它可以查找所有的,并返回一個(gè)列表,。還要用到get方法,,get可以獲得tag的屬性,如tag: tag.get(‘a(chǎn)ttr’)值等于abc,。這里我們要獲取的屬性是name,,通過(guò)name=’description’來(lái)區(qū)分。
接下來(lái),,在兩個(gè)img標(biāo)簽中,,查找第2個(gè)img標(biāo)簽標(biāo)定的鏈接。這里通過(guò)find_all方法,,它可以查找所有的符合要求的標(biāo)簽,。
這樣,我們就把所需要的信息找出來(lái)了,。 終端示例 等等,,之后我們還需要并發(fā)和保存文件。在此之前,,先來(lái)看點(diǎn)別的,。map函數(shù)有兩個(gè)參數(shù),一個(gè)是函數(shù),,一個(gè)是序列,。將序列的每個(gè)值,作為參數(shù)傳遞給函數(shù),,返回一個(gè)列表,。參考這里 示例:
結(jié)果: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 然后并發(fā), python可以跨平臺(tái)使用,,自身提供了多進(jìn)程支持模塊:multiprocessing。而pool可以用來(lái)創(chuàng)建大量的子進(jìn)程,。 保存數(shù)據(jù)到文件,。這里我們是吧數(shù)據(jù)解析后存儲(chǔ)到字典中,然后序列化為JSON模型,,最后保存到文件的,。 即:字典->JSON模型->存儲(chǔ)到文件。 字典->JSON模型,,使用的是JSON模塊的json.dumps方法,,該方法有一個(gè)參數(shù),參數(shù)為字典,,返回值是JSON字符串,。 JSON模型->文件,使用的是json.load方法,,可以將JSON存儲(chǔ)到文件中,。 全部的代碼示例如下:
●本文編號(hào)56,以后想閱讀這篇文章直接輸入56即可,。 ●輸入m可以獲取到文章目錄
|
|