python爬蟲(房天下)

房天下

import requests
res = requests.get('http://esf.sz.fang.com/')
#res.text
from bs4 import BeautifulSoup
soup = BeautifulSoup(res.text,'html.parser')
domain = 'http://esf.sz.fang.com'
for house in soup.select('.houseList dl'):
    if len(house.select('.title')) > 0:
        #print(house.select('.title'))
        #print(house.select('.title')[0].text.strip('\n'))
        #title = house.select('.title')[0].text.strip('\n')
        link = house.select('.title a')[0]['href']
        url = domain + link
        #print(title)
        print(url)
        print("=====================================")
http://esf.sz.fang.com/chushou/3_195350255.htm
=====================================
http://esf.sz.fang.com/chushou/3_195673873.htm
=====================================
http://esf.sz.fang.com/chushou/3_194871298.htm
=====================================
http://esf.sz.fang.com/chushou/3_195440493.htm
=====================================
http://esf.sz.fang.com/chushou/3_194941076.htm
=====================================
http://esf.sz.fang.com/chushou/3_195229169.htm
=====================================
http://esf.sz.fang.com/chushou/3_195408601.htm
=====================================
http://esf.sz.fang.com/chushou/3_195686255.htm
=====================================
http://esf.sz.fang.com/chushou/3_195652264.htm
=====================================
http://esf.sz.fang.com/chushou/3_195602160.htm
=====================================
http://esf.sz.fang.com/chushou/3_195499064.htm
=====================================
http://esf.sz.fang.com/chushou/3_195655132.htm
=====================================
http://esf.sz.fang.com/chushou/3_195018784.htm
=====================================
http://esf.sz.fang.com/chushou/3_193837152.htm
=====================================
http://esf.sz.fang.com/chushou/3_195680364.htm
=====================================
http://esf.sz.fang.com/chushou/3_195585056.htm
=====================================
http://esf.sz.fang.com/chushou/3_195346885.htm
=====================================
http://esf.sz.fang.com/chushou/3_195500516.htm
=====================================
http://esf.sz.fang.com/chushou/3_194325860.htm
=====================================
http://esf.sz.fang.com/chushou/3_195556602.htm
=====================================
http://esf.sz.fang.com/chushou/3_195555259.htm
=====================================
http://esf.sz.fang.com/chushou/3_195692033.htm
=====================================
http://esf.sz.fang.com/chushou/3_195202600.htm
=====================================
http://esf.sz.fang.com/chushou/3_195521932.htm
=====================================
http://esf.sz.fang.com/chushou/3_195392858.htm
=====================================
http://esf.sz.fang.com/chushou/3_194891027.htm
=====================================
http://esf.sz.fang.com/chushou/3_192915787.htm
=====================================
http://esf.sz.fang.com/chushou/3_195538851.htm
=====================================
http://esf.sz.fang.com/chushou/3_195737629.htm
=====================================
http://esf.sz.fang.com/chushou/3_195587205.htm
=====================================

'''
[0] 出錯
IndexError: list index out of range
第1種可能狀況
list[index]index超出範圍
第2種可能狀況
list是一個空的 沒有一個元素
進行list[0]就會出現該錯誤html

'''python

import requests
res = requests.get('http://esf.sz.fang.com/chushou/10_195724712.htm')
from bs4 import BeautifulSoup
soup = BeautifulSoup(res.text,'html.parser')
soup.select('.title h1')[0].text.strip()
'碧桂園翡翠山坡地別墅 配套設施齊全 環境優美 價格實惠 交通便利'
info = {}
info['標題'] = soup.select('.title h1')[0].text.strip()
info
{'標題': '碧桂園翡翠山坡地別墅 配套設施齊全 環境優美 價格實惠 交通便利'}
soup.select('.zongjia1 .red20b')[0].text
'398'
info['總價'] = soup.select('.zongjia1 .red20b')[0].text
info
{'總價': '398', '標題': '碧桂園翡翠山坡地別墅 配套設施齊全 環境優美 價格實惠 交通便利'}
for dd in soup.select('dd'):
    if ':' in dd.text.strip():
        #print(dd.text.strip().split(':'))
        key,value = dd.text.strip().split(':')
        info[key] = value
info
{'專業度': '2.3',
 '二 手 房': '32套',
 '使用面積': '216�O',
 '廳 結 構': '平層',
 '參考月供': '',
 '參考首付': '119.4萬',
 '同比去年': '↓2.1%',
 '地上層數': '3層',
 '地下室面積': '200平米(全明)',
 '好評率': '33%',
 '建築年代': '2016年',
 '建築形式': '獨棟',
 '建築面積': '216�O',
 '開 發 商': '東莞市黃江碧桂園房地產開發有限公司',
 '總價': '398',
 '戶型': '5室2廳1廚4衛',
 '標題': '碧桂園翡翠山坡地別墅 配套設施齊全 環境優美 價格實惠 交通便利',
 '滿意度': '2.3',
 '物 業 費': '暫無資料',
 '物業公司': '暫無資料',
 '物業類型': '別墅',
 '環比上月': '↓1.39%',
 '真實度': '2.3',
 '租 房': '0套',
 '綠 化 率': '0.00%',
 '花園面積': '100平米',
 '裝修程度': '精裝修',
 '車位數量': '2個',
 '車庫數量': '1個',
 '進門朝向': '南'}
def getHouseDetil(url):
    info = {}
    import requests
    res = requests.get(url)
    from bs4 import BeautifulSoup
    soup = BeautifulSoup(res.text,'html.parser')
    info['標題'] = soup.select('.title h1')[0].text.strip()
    info['總價'] = soup.select('.zongjia1 .red20b')[0].text
    for dd in soup.select('dd'):
        if ':' in dd.text.strip():
            #print(dd.text.strip().split(':'))
            key,value = dd.text.strip().split(':')
            info[key] = value
    return info
url = 'http://esf.sz.fang.com/chushou/3_195684731.html'
getHouseDetil(url)
{'專業度': '5',
 '二 手 房': '264套',
 '產權性質': '商品房',
 '住宅類別': '普通住宅',
 '使用面積': '76�O',
 '參考月供': '',
 '參考首付': '114萬',
 '同比去年': '↑1.11%',
 '好評率': '100%',
 '年代': '2013年',
 '建築類別': '板樓',
 '建築面積': '89�O',
 '開 發 商': '和記黃埔地產(深圳)有限公司',
 '總價': '380',
 '戶型': '3室2廳1廚2衛',
 '朝向': '南',
 '標題': '剛剛放盤 和黃懿花園頂樓湖景房 帶20萬裝修 誠心出售380萬!',
 '樓層': '高層(共10層)',
 '滿意度': '5',
 '物 業 費': '3.8元/平米・月',
 '物業公司': '暫無資料',
 '物業類型': '住宅',
 '環比上月': '↑0.01%',
 '真實度': '5',
 '租 房': '66套',
 '結構': '平層',
 '綠 化 率': '30.00%',
 '裝修': '精裝修'}

綜合案例

import requests
from bs4 import BeautifulSoup
res = requests.get('http://esf.sz.fang.com/')
soup = BeautifulSoup(res.text,'html.parser')
domain = 'http://esf.sz.fang.com'
houslist = []
for house in soup.select('.houseList dl'):
    if len(house.select('.title')) > 0:
        link = house.select('.title a')[0]['href']
        url = domain + link 
        houslist.append(getHouseDetil(url))
len(houslist)
30
houslist[21]
{'專業度': '5.0',
 '二 手 房': '993套',
 '產權性質': '商品房',
 '住宅類別': '普通住宅',
 '使用面積': '126�O',
 '參考月供': '',
 '參考首付': '47.4萬',
 '同比去年': '暫無資料',
 '好評率': '100%',
 '年代': '2016年',
 '建築類別': '板樓',
 '建築面積': '128�O',
 '開 發 商': '20160527162320,2016051',
 '總價': '158',
 '戶型': '4室2廳1廚2衛',
 '朝向': '南北',
 '標題': '碧桂園公園上城、全智能社區、精裝四房、南站萬達、帶',
 '滿意度': '5.0',
 '物 業 費': '2.6元/�O・月',
 '物業公司': '廣東碧桂園物業服務有限公司',
 '物業類型': '住宅',
 '環比上月': '↑0.14%',
 '真實度': '5.0',
 '租 房': '0套',
 '結構': '平層',
 '綠 化 率': '30.00%',
 '裝修': '精裝修'}
import pandas
df = pandas.DataFrame(houslist)
#df
df.to_excel('/mnt/z/house.xlsx')
url1 = 'http://esf.sz.fang.com/house/i3'
for i in range(1,3):
    print (url1 + str(i))
http://esf.sz.fang.com/house/i31
http://esf.sz.fang.com/house/i32
import requests
import pandas
from bs4 import BeautifulSoup
domain = 'http://esf.sz.fang.com'
url1 = 'http://esf.sz.fang.com/house/i3'
houslist = []
for i in range(1,21):
    res = requests.get(url1 + str(i))
    soup = BeautifulSoup(res.text,'html.parser')
    for house in soup.select('.houseList dl'):
        if len(house.select('.title')) > 0:
            link = house.select('.title a')[0]['href']
            url = domain + link 
            houslist.append(getHouseDetil(url))
df = pandas.DataFrame(houslist)
df.to_excel('/mnt/z/house4.xlsx')
相關文章
相關標籤/搜索