爬虫抓取糯米网上所有商家数据
前段時(shí)間寫了 爬取美團(tuán)商家信息的博客?爬蟲抓取美團(tuán)網(wǎng)上所有商家信息?,這次說說爬取糯米網(wǎng),由于某些原因無法提供源代碼,但是,代碼不是關(guān)鍵,最關(guān)鍵的是思想,懂了思想,代碼是很容易寫的.
爬蟲最重要的是分析請求過程,按照實(shí)際請求過程去請求數(shù)據(jù).
分析是否需要處理cookie,有些網(wǎng)站比較嚴(yán)格請求某些接口的數(shù)據(jù)時(shí)是需要cookie,獲取cookie的鏈接一般是首頁,一般的系統(tǒng)會(huì)有一個(gè)JsessionId 來保持會(huì)話.從你訪問一個(gè)頁面開始服務(wù)器就會(huì)返回這個(gè)JsessionId給你,但是訪問某些接口,沒有帶這個(gè)cookie,服務(wù)器就不會(huì)返回?cái)?shù)據(jù)給你,? 這個(gè)可以看看我之前寫的?使用python爬取12306上面所有車次數(shù)據(jù)?? ,在爬取12306時(shí)就需要處理cookie.
分析網(wǎng)站的請求限制,由于爬蟲會(huì)增加他們服務(wù)器壓力,流量浪費(fèi),數(shù)據(jù)損失.所以很多網(wǎng)站都會(huì)有請求次數(shù)的限制.但是他們數(shù)據(jù)既然是開放的,就一定可以爬取到.只是付出的代價(jià)大小的問題.一般會(huì)根據(jù)ip來限制請求,請求到一定次數(shù)時(shí)會(huì)有驗(yàn)證碼.? 比如在爬天眼查的數(shù)據(jù)時(shí),就遇到這個(gè)問題.可以使用代理.現(xiàn)在獲取代理很容易,也很便宜.
分析網(wǎng)站的數(shù)據(jù)是否是通過ajax加載的,返回的數(shù)據(jù)是否有加密.一般這種情況可以使用無界面的瀏覽器來請求,瀏覽器中會(huì)自己處理好這些事情.
抓取頁面,解析想要數(shù)據(jù),這個(gè)就比較簡單了.頁面已經(jīng)抓取下來了,可以使用一些開源的框架解析頁面中數(shù)據(jù),也可以使用正則.
下面分析如何抓取糯米網(wǎng)上的數(shù)據(jù).
經(jīng)過分析發(fā)現(xiàn)糯米??不需要處理cookie,沒有ajax加載的情況,有請求的限制,所以就只需要使用代理就可以了.
我們現(xiàn)在分析要如何才能爬取全部數(shù)據(jù).
從鏈接https://bj.nuomi.com/364/307-1388? 可以猜測 bj就是北京, 364是火鍋的分類,307-1388就是地區(qū).提前收集這些數(shù)據(jù)后面爬取的時(shí)候直接拼接就可以,方便快捷.
這里我只整理到城市,沒有整理到區(qū),所以區(qū)和商圈是我們爬取時(shí)需要處理,可以先拼接城市和分類然后獲取區(qū)/縣
再遍歷區(qū)縣,獲取商圈,再遍歷,最后就可以獲取團(tuán)購數(shù)據(jù)
[python]?view plaincopy現(xiàn)在就來分析團(tuán)購信息,
可以發(fā)現(xiàn)這不是商家,而是團(tuán)購的商品,說明這些團(tuán)購后面有很多是同個(gè)商家.我們分兩層來爬取,因?yàn)檫@一層是有順序的一個(gè)城市一個(gè)類別的爬.但是通過團(tuán)購獲取商家信息是沒有順序的.
爬取這一層之后的結(jié)果如下.
這一層是無法獲取商家的更詳細(xì)的信息,但是通過這個(gè)團(tuán)購鏈接就可以獲取到更加詳細(xì)的信息.我們對這些團(tuán)購鏈接進(jìn)行排重,然后進(jìn)行第二層爬取.
這里就是我們需要的數(shù)據(jù),但是在實(shí)際爬取時(shí)發(fā)現(xiàn)抓取到的頁面沒有這個(gè)數(shù)據(jù).可以猜測這是通過ajax來加載的.
立刻打開firebug,刷新頁面
發(fā)現(xiàn)果然和我的猜想是一樣的這塊數(shù)據(jù)是通過ajax來加載的,查看鏈接發(fā)現(xiàn),只要獲取到dealid就可以拼接鏈接了.
最后只要只要對抓取的數(shù)據(jù)進(jìn)行解析保存就可以了.
分析完全部的過程,寫完代碼,就可以讓程序慢慢跑了,我的這個(gè)數(shù)據(jù)是運(yùn)行了一個(gè)月才有結(jié)果.然后對數(shù)據(jù)進(jìn)行整理.最終的數(shù)據(jù)如下:
糯米美食? 453792條數(shù)據(jù)
糯米生活? 149002條數(shù)據(jù)
糯米娛樂?? 74932條數(shù)據(jù)
糯米麗人?? 73123條數(shù)據(jù)
總的數(shù)據(jù)? 750849 條數(shù)據(jù)??
時(shí)間:20170404
https://blog.csdn.net/u013243986/article/details/69062941
總結(jié)
以上是生活随笔為你收集整理的爬虫抓取糯米网上所有商家数据的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 星途lx1.5t星睿版6.8油耗怎么样?
- 下一篇: 重写Oracle的wm_concat函数