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')