2017-4-4抓取趕集房源信息存入mongodb

看了擲骰子的求的這篇文章http://www.itdecent.cn/p/5f5cfefd7f1d#覺得獲益匪淺,正好在練習(xí)怎么把數(shù)據(jù)存入mongodb,就跟著博主選了趕集的租房信息作了數(shù)據(jù)源,選合租,個人(依然不會在ubuntu上打出頓號)后就是這個鏈接http://cd.ganji.com/fang3/a1o1。

分析頁面特征并爬取每處房子的詳情url

  • 觀察翻頁時url的變動信息
頁1.png

頁2.png
  • 頁數(shù)與翻頁
    顯而易見a1o1和a1o2的o幾就是頁數(shù),趕集頁面好像改版了,所以不能再像原博那樣分析邊界條件了,我直接改變url頁數(shù)試出大概有63頁(技術(shù)不夠,體力來湊)。
count = 0
for i in range(1, page + 1):
    url = 'http://cd.ganji.com/fang3/a1o%s/' % i 
  • 然后通過status_code對頁面進(jìn)行判斷
    if zf_data.status_code == 404:
        pass
  • 關(guān)于線程與進(jìn)程只是以前看過幾頁書知道是怎么回事但沒寫過代碼,代理池也并不會,慢點(diǎn)爬應(yīng)該不會封我一個小IP吧,這次主要練習(xí)存儲數(shù)據(jù),所以就一切簡單化
  • 然后就遇到了一個巨大的坑,本來我是根據(jù)這個href提取url的


    href.png

    寫了這樣的代碼

links = soup.select("class.f-list-item")

這個爬蟲寫完后以為不會再出bug,就run了起來然后起身去廁所,沒想到回來它就停了。

第五個出錯.png

在PyCharm上檢查了一下,是第五個數(shù)據(jù)出了問題,然后檢查代碼發(fā)現(xiàn)好像沒錯,再打開趕集F12一下,哇,原來是被趕集這個源碼坑了。上圖


陷阱.png

趕集把第5個規(guī)則改了一下,確實(shí)是防爬了。好了,不怕有bug,只要知道是什么原因就好解決了。改變策略,上re,用那個puid構(gòu)建url(先在源碼里面搜索下數(shù)量檢查一下),然后寫入mongodb表url_list中。

        puid = re.findall('id="puid-(.*?)"', html, re.S)
        count += 1
        print('抓到第%s頁鏈接' % count)
        for l in puid:
            fang_url = 'http://cd.ganji.com/fang3/%sx.htm' % l
            url_list.insert_one({'link': fang_url})
            print(fang_url)

根據(jù)每處房子的url抓取詳細(xì)信息

  • 用BeautifulSoup就是很簡單的頁面分析
        data = {
            'title': soup.select(".card-title i")[0].get_text(strip=True),
            'price': soup.select(".price")[0].get_text(strip=True),
            'synopsis': soup.select(".fang-info")[0].get_text(" ", strip=True),
            'name': soup.select(".item-con")[0].get_text(strip=True),
            'area': soup.select(".item-con")[1].get_text(strip=True),
            'describe': soup.select(".describe")[0].get_text(strip=True),
            'url': url
        }
        print(data)
        items_info.insert_one(data)

最后用函數(shù)封裝起來

    it = url_list.find()
    for i in it:
        url = i['link']
        get_items(url=url)

運(yùn)行了一會依然是有bug出現(xiàn)了

bug.png
抓取數(shù)量.png
數(shù)據(jù).png

總共是3405個url,抓了912個信息存入mongodb。至于為什么912個就停了,現(xiàn)在絲毫不想debug,日后再說吧。

  • **數(shù)據(jù)可視化還不會,抓取動態(tài)頁面也還沒學(xué),還有線程代理等等要學(xué)的。B回城回滿血再傳送到線上繼續(xù)farm **
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容