鏈家租房數據抓取流程、分析

一、抓取前準備工作:

1、創建一個爬蟲項目:在指定的文件夾中 scrapy startproject xxx(項目名)
2、在項目的spiders的目錄中創建爬蟲:scrapy genspider bd.py baidu.com
3、在setting中修改robot協議爲False,表示不遵守robot協議
4、啓動爬蟲:scrapy crawl bd --nolog 不打印日誌啓動,在爬蟲正常情況下使用
            scrapy crawl bd         打印日誌啓動,在爬蟲沒有正常返回情況下使用
            命令scrapy crawl是固定的,bd表示定義的爬蟲名稱
5、爬蟲啓動後,自動去獲取start_urls,下載相應的頁面,返回給parse函數(固定)
1、scrapy genspider boss zhipin.com 是創建爬蟲spider文件的命令
其中scrapy genspider是固定的,boss是爬蟲的名稱,zhipin.com表示此爬蟲可以爬取的域名

2、修改start_urls,然後在parse函數中打印response

3、在setting中添加 HTTPERROR_ALLOWED_CODES = [403],表示可以接收的狀態碼

4、由於返回403,需要加上請求頭,在setting中打開 USER_AGENT = 'mySpider (+http://www.yourdomain.com)' 給請求加上請求頭

5、明確爬蟲的目標,在items.py中設置需要爬取的字段

6、書寫parse函數,獲取相應的字段數據

7、將數據存放到item實例當中,返回給pipeline,記得打開settings中的pipeline
ITEM_PIPELINES = {
    # 後面的300是優先級,越小優先級越高
    'mySpider.pipelines.MyspiderPipeline': 300,
}

8、pipeline進行入庫處理

二、鏈家租房抓取報告:

1、獲取全部城市url:城市接口或在頁面上獲取。

2、城市url --> 城區url --> 商圈url:數據多,所有頁面無法獲取完整的數據,所以要將範圍縮小,直到能獲取到完整的數據爲止。

3、獲取最大頁max_page或下一頁url:打印的html可以直接看到最大頁時,從html上獲取;打印的html沒有最大頁時,找接口或者js。

4、拼接帶頁碼的完整的url。

5、獲取列表頁數據:先縮小範圍,然後用xpath和re獲取想要的數據,用英語命名字段名,然後對獲取下來的數據進行非空處理,再將獲取好的數據加入字典。

6、獲取詳情數據:根據獲取下來的詳情url對應的頁面獲取詳情頁裏想要獲取的數據,然後獲取第5步的字典,將數據加入字典中,最後返回字典。

7、將數據插入數據庫:獲取返回的數據,轉換成字典,將字典插入數據庫,redis數據庫需要先將字典轉換成字符串。

**

三、抓取的問題分析:

1、抓取的字段爲空:以獲取到的頁面爲準。

2、獲取經紀人的信息:經紀人的信息在經紀人接口中,經紀人接口裏包含了房源編號和ucid,所以先獲取房源編號和ucid,然後拼接經紀人接口,從接口獲取的數據轉成json類型,從json裏取數據。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章