這周的練習(xí)之一是爬取魔方公寓的出租房髓废,它的網(wǎng)頁(yè)結(jié)構(gòu)還比較清楚巷懈,沒(méi)什么隱藏。
目的也很單純慌洪,就是取名稱顶燕、地址、月租均價(jià)冈爹。
我的基礎(chǔ)還是太太太薄弱涌攻,爬第一個(gè)項(xiàng)目:地址的時(shí)候就被卡住了,嘗試n次排列組合無(wú)果频伤,還被大神批評(píng)思路不對(duì):只爬一個(gè)地址就要寫(xiě)一段恳谎,那爬其他的再寫(xiě)n段?——其實(shí)我也不是邏輯那么不清楚憋肖,只不過(guò)我連一個(gè)地址都搞不定因痛,遑論其他啊...
經(jīng)過(guò)大神解說(shuō),我覺(jué)得我還是對(duì)html編碼不熟悉岸更,所以該摘取的沒(méi)有摘取鸵膏,該繞過(guò)的沒(méi)有繞過(guò)。我也不貼自己的坑了怎炊,反正每個(gè)小白都有這么一段黑歷史...直接解說(shuō)正確答案吧谭企。
#coding:utf-8
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
import requests
from lxml import etree
#以上都是前面作業(yè)的模板
#第一步:網(wǎng)頁(yè)主頁(yè)(南京分舵) http://www.52mf.com.cn/Search/Orgs?city=%E5%8D%97%E4%BA%AC'
html = requests.get('http://www.52mf.com.cn/Search/Orgs?city=%E5%8D%97%E4%BA%AC').content
selector=etree.HTML(html)
#第二步:每個(gè)店的編碼段
infos=selector.xpath('//div[@class="orgs-room clearfix"]/div[2]')
這里我學(xué)到一個(gè)小技巧廓译,還是要通過(guò)點(diǎn)選,這里點(diǎn)了"orgs-room clearfix"這行债查,相應(yīng)區(qū)域就自動(dòng)暗下來(lái)非区,反過(guò)來(lái)也是這樣。所以第二級(jí)的編碼應(yīng)該選這個(gè)盹廷。
此外征绸,class前面要加@,后面因?yàn)槭堑诙?jí)分區(qū)俄占,所以是div[2](這個(gè)是我的弱點(diǎn)歹垫,還是對(duì)html編碼太陌生了)
第三步是取出名稱,地址和均價(jià)颠放,圖片略過(guò)。
這里店名編碼"room-hd"后面有個(gè)"/a"吭敢,所以不要略過(guò)碰凶。對(duì)于小白來(lái)說(shuō),什么時(shí)候取div鹿驼,什么時(shí)候取p欲低,什么時(shí)候加a,可以從下面的標(biāo)簽得到提示畜晰。
地址和價(jià)格也照樣進(jìn)行砾莱,價(jià)格那里有個(gè)粗體的stong,也加上凄鼻。
for info in infos:
shop_name=info.xpath('p[@class="room-hd"]/a/text()')[0]
address=info.xpath('p[@class="address"]/text()')[0]
room_money=info.xpath('p[@class="room-money"]/strong/text()')[0].lstrip('均價(jià):¥').rstrip('/月')
print shop_name,address,room_money
最后還有一個(gè)坑:打印出來(lái)的店名腊瑟,地址和月租都是列表,所以加入[0]要選取第一個(gè)!
lstrip和rstrip都是把均價(jià)的左右字符刪掉块蚌,這樣爬出來(lái)就只有數(shù)字了闰非。
如果不想只打南京的,那么就加一個(gè)城市列表好了峭范。這段是程工示例财松,我還在理論研究階段,不賣(mài)弄了纱控。
if __name__ == '__main__':
base_url='http://www.52mf.com.cn/Search/Orgs?city=%s'
city_list=['北京','上海','南京','蘇州']
for city in city_list:
url=base_url % city.encode('utf-8')
get_shop_data(url)
然后就得到一個(gè)好整齊的信息列表辆毡,我直接貼到excel用空格分列就好了。當(dāng)然日后還是要學(xué)習(xí)怎么寫(xiě)入文件的甜害。
我覺(jué)得我的思路還是正確的舶掖,就是幾乎,完全唾那,沒(méi)有技術(shù)能力访锻。首先要好好學(xué)習(xí)最基本的html褪尝,更別說(shuō)前面還有各種花式等著呢∑谌總是想象自己好像冰川時(shí)代那只松鼠河哑,用自己的大門(mén)牙啃冰山ing...
希望對(duì)其他小白有幫助。Done.