python爬取網(wǎng)站數(shù)據(jù)(含代碼和講解)
前言
這次爬取的網(wǎng)站是房天下網(wǎng)站;
其中包含很多樓盤信息:https://newhouse.fang.com/house/s/b81-b91/
我在網(wǎng)站上進(jìn)行了一步篩選,即選取北京及北京周邊的房源,各位要是想爬取其他城市的房源信息也很簡(jiǎn)單,改一下url信息即可。

一、數(shù)據(jù)采集的準(zhǔn)備
1.觀察url規(guī)律
觀察到北京及周邊地區(qū)的房源有很多網(wǎng)頁(yè),翻幾頁(yè)就能發(fā)現(xiàn)url的規(guī)律:
網(wǎng)址就是:https://newhouse.fang.com/house/s/? +? b81-b9X? +? /? ?;其中X是頁(yè)碼

利用for循環(huán)遍歷所有網(wǎng)頁(yè):

pip 安裝fake_useragent庫(kù):
fake-useragent可以偽裝生成headers請(qǐng)求頭中的User Agent值,將爬蟲(chóng)偽裝成瀏覽器正常操作。

導(dǎo)入接下來(lái)會(huì)用到的包:?

設(shè)置請(qǐng)求參數(shù):需要大家替換的有'cookie'和'referer'兩項(xiàng)的值:
'cookie':每次訪問(wèn)網(wǎng)站服務(wù)器的時(shí)候,服務(wù)器都會(huì)在本地設(shè)置cookie,表明訪問(wèn)者的身份。記得每次使用時(shí),都要按照固定方法人工填入一個(gè) cookie。
?'referer':請(qǐng)求參數(shù),標(biāo)識(shí)請(qǐng)求是從哪個(gè)頁(yè)面過(guò)來(lái)的。

2.設(shè)定爬取位置和路徑(xpath)
因?yàn)榕廊?shù)據(jù)主要依托于'目標(biāo)數(shù)據(jù)所在位置的確定’,所以一定先要搞清楚目標(biāo)數(shù)據(jù)的位置(位于div的哪一塊);
先發(fā)送請(qǐng)求:?

??
我想爬取的數(shù)據(jù)主要就是:樓盤名稱、評(píng)論數(shù)、房屋面積、詳細(xì)地址、所在區(qū)域、均價(jià)?5項(xiàng)數(shù)據(jù)。


此時(shí)采集到的數(shù)據(jù)還包含著:[]方括號(hào)、—橫杠、“平米”等符號(hào)或者單位,所以要對(duì)數(shù)據(jù)進(jìn)行簡(jiǎn)單的split處理,把真正需要的數(shù)據(jù)提取出來(lái):

二、數(shù)據(jù)采集
1. 建立存放數(shù)據(jù)的dataframe

2. 開(kāi)始爬取
這里圖方便就只爬取了前10頁(yè),因?yàn)楹竺娴姆吭淳徒?jīng)常少信息,要么沒(méi)有面積信息,要么沒(méi)有所在區(qū)域。?


3. 把數(shù)據(jù)導(dǎo)出成csv表格


