1. 程式人生 > >爬蟲抓取糯米網上所有商家資料

爬蟲抓取糯米網上所有商家資料

前段時間寫了 爬取美團商家資訊的部落格 爬蟲抓取美團網上所有商家資訊 ,這次說說爬取糯米網,由於某些原因無法提供原始碼,但是,程式碼不是關鍵,最關鍵的是思想,懂了思想,程式碼是很容易寫的.

爬蟲最重要的是分析請求過程,按照實際請求過程去請求資料.

分析是否需要處理cookie,有些網站比較嚴格請求某些介面的資料時是需要cookie,獲取cookie的連結一般是首頁,一般的系統會有一個JsessionId 來保持會話.從你訪問一個頁面開始伺服器就會返回這個JsessionId給你,但是訪問某些介面,沒有帶這個cookie,伺服器就不會返回資料給你,  這個可以看看我之前寫的 使用python爬取12306上面所有車次資料

  ,在爬取12306時就需要處理cookie.

分析網站的請求限制,由於爬蟲會增加他們伺服器壓力,流量浪費,資料損失.所以很多網站都會有請求次數的限制.但是他們資料既然是開放的,就一定可以爬取到.只是付出的代價大小的問題.一般會根據ip來限制請求,請求到一定次數時會有驗證碼.  比如在爬天眼查的資料時,就遇到這個問題.可以使用代理.現在獲取代理很容易,也很便宜.

分析網站的資料是否是通過ajax載入的,返回的資料是否有加密.一般這種情況可以使用無介面的瀏覽器來請求,瀏覽器中會自己處理好這些事情.

抓取頁面,解析想要資料,這個就比較簡單了.頁面已經抓取下來了,可以使用一些開源的框架解析頁面中資料,也可以使用正則.

下面分析如何抓取糯米網上的資料.

經過分析發現糯米  不需要處理cookie,沒有ajax載入的情況,有請求的限制,所以就只需要使用代理就可以了.

我們現在分析要如何才能爬取全部資料.


從連結https://bj.nuomi.com/364/307-1388  可以猜測 bj就是北京, 364是火鍋的分類,307-1388就是地區.提前收集這些資料後面爬取的時候直接拼接就可以,方便快捷.



這裡我只整理到城市,沒有整理到區,所以區和商圈是我們爬取時需要處理,可以先拼接城市和分類然後獲取區/縣

再遍歷區縣,獲取商圈,再遍歷,最後就可以獲取團購資料

# 區/縣
def getArea(cityUrl,cityName,type,subType,subTypeCode):
    url=cityUrl+"/"+subTypeCode
    soup=download_soup_waitting(url)
    try:
        geo_filter_wrapper=soup.find("div",attrs={"class":"filterDistrict"})
        J_filter_list=geo_filter_wrapper.find("div",attrs={"class":"district-list-ab"})
        lis=J_filter_list.findAll("a")
        for li in lis :
            # a=li.find("a")
            url='http:'+li['href']
            area=li.text
            getSubArea(url,area,cityName,type,subType)
    except:
        getBusiness(url,"","",cityName,type,subType)

# 商圈
def getSubArea(url,area,cityName,type,subType):
    soup=download_soup_waitting(url)
    geo_filter_wrapper=soup.find("div",attrs={"class":"district-sub-list-ab"})
    if geo_filter_wrapper==None:
        getBusiness(url,"",area,cityName,type,subType)
        return
    lis=geo_filter_wrapper.findAll("a")[1:]
    for li in lis :
        # a=li.find("a")
        url=li['href']
        subArea=li.text
        getBusiness("http:"+url,subArea,area,cityName,type,subType)

現在就來分析團購資訊,


可以發現這不是商家,而是團購的商品,說明這些團購後面有很多是同個商家.我們分兩層來爬取,因為這一層是有順序的一個城市一個類別的爬.但是通過團購獲取商家資訊是沒有順序的.

爬取這一層之後的結果如下.


這一層是無法獲取商家的更詳細的資訊,但是通過這個團購連結就可以獲取到更加詳細的資訊.我們對這些團購連結進行排重,然後進行第二層爬取.


這裡就是我們需要的資料,但是在實際爬取時發現抓取到的頁面沒有這個資料.可以猜測這是通過ajax來載入的.

立刻開啟firebug,重新整理頁面


發現果然和我的猜想是一樣的這塊資料是通過ajax來載入的,檢視連結發現,只要獲取到dealid就可以拼接連結了.

最後只要只要對抓取的資料進行解析儲存就可以了.

分析完全部的過程,寫完程式碼,就可以讓程式慢慢跑了,我的這個資料是運行了一個月才有結果.然後對資料進行整理.最終的資料如下:

糯米美食  453792條資料


糯米生活  149002條資料


糯米娛樂   74932條資料


糯米麗人   73123條資料


總的資料  750849 條資料 

時間:20170404

技術問題或者要這份資料  可以聯絡  zhenpeng_lin#qq.com   #換為@

相關推薦

爬蟲糯米網上所有商家資料

前段時間寫了 爬取美團商家資訊的部落格 爬蟲抓取美團網上所有商家資訊 ,這次說說爬取糯米網,由於某些原因無法提供原始碼,但是,程式碼不是關鍵,最關鍵的是思想,懂了思想,程式碼是很容易寫的. 爬蟲最重

[js高手之路]Node.js實現簡易的爬蟲-博客所有文章列表信息

r.js 目錄 ref 抓取 {} attr 視頻 json clist 抓取目標:就是我自己的博客:http://www.cnblogs.com/ghostwu/ 需要實現的功能: 抓取博客所有的文章標題,超鏈接,文章摘要,發布時間 需要用到的庫: node.js自帶的h

用python爬蟲視訊網站所有電影

執行環境 IDE丨pycharm 版本丨Python3.6 系統丨Windows ·實現目的與思路· 目的: 實現對騰訊視訊目標url的解析與下載,由於第三方vip解析,只提供線上觀看,隱藏想實現對目標視訊的下載 思路: 首先拿到想要看的騰訊電影url,通過第三方vip視訊解析網站進

Python網路爬蟲動態網頁並將資料存入資料庫MYSQL

簡述 以下的程式碼是使用python實現的網路爬蟲,抓取動態網頁http://hb.qq.com/baoliao/。此網頁中的最新、精華下面的內容是由JavaScript動態生成的。審查網頁元素與網頁原始碼是不同。 本人對於Python學習建立了一個小小的學習圈子,為各位提供了

爬蟲美團網上所有商家資訊

由於美團網對於IP訪問次數有限制,當訪問達到一定次數美團會增加延遲,訪問次數再增加時就會有驗證碼,所以爬取時就需要注意控制訪問的頻率,以及訪問一定次數後更換代理IP. 在爬取過程中我們可以先抓取所有的

爬蟲實戰-酷狗音樂資料--XPath,Pyquery,Beautifulsoup資料提取對比實戰

網站: http://www.kugou.com/yy/html/rank.html 爬取目標: 酷酷狗飆升榜的歌手,歌曲名字,歌曲連結等內容,存到Mysql資料庫中 網頁解析: 此次爬取採用三種解析方式: 程式碼如下: import requests from l

第一個Python爬蟲-煎蛋網上圖片

背景 作為一個計算機基礎薄弱的電氣工程師,廖大的教程看到常用的內建模組時,看的頭大,特別是看到HTMLParser時,已宛如天書了。這時作為一個初學者的劣勢就暴露出來了,我不知道哪部分知識是理解這些模組的前置條件,即使知道是哪部分知識,但不知道該理解到什麼程度才能解決當前的問題。個人建議

Python爬蟲 資料崗位招聘資訊(51job為例)

簡單介紹一下爬蟲原理。並給出 51job網站完整的爬蟲方案。 爬蟲基礎知識 資料來源 網路爬蟲的資料一般都來自伺服器的響應結果,通常有html和json資料等,這兩種資料也是網路爬蟲的主要資料來源。 其中html資料是網頁的原始碼,通過瀏覽器-檢視原始碼可

python實踐2——利用爬蟲豆瓣電影TOP250資料及存入資料到MySQL資料庫

這次以豆瓣電影TOP250網為例編寫一個爬蟲程式,並將爬取到的資料(排名、電影名和電影海報網址)存入MySQL資料庫中。下面是完整程式碼:Ps:在執行程式前,先在MySQL中建立一個數據庫"pachong"。import pymysql import requests imp

Python爬蟲動態資料

一個月前實習導師佈置任務說通過網路爬蟲獲取深圳市氣象局釋出的降雨資料,網頁如下: 心想,爬蟲不太難的,當年跟zjb爬煎蛋網無(mei)聊(zi)圖的時候,多麼清高。由於接受任務後的一個月考試加作業一大堆,導師也不催,自己也不急。 但是,導師等我一個月都得讓我來寫意味著這

使用爬蟲網站非同步載入資料

什麼是非同步載入? 向網站進行一次請求,一次只傳部分資料。如:有些網頁不需要點選下一頁,其內容也可以源源不斷地載入。 如何發現非同步載入? 1、開啟瀏覽器,右鍵選擇“檢查” 2、點選“Network”、“XHR” 這樣在網頁進行不斷下拉的過程中,顯示器

大眾點評各城市熱門餐廳資料爬蟲

大眾點評抓取 網址連結 通過觀察每個城市的連結主要區別於ranKld,每個城市有特定的ID,因此先獲取到相應城市的ID,便可進行後續抓取。 獲取到的城市ID為: ["上海","fce2e3a36450422b7fad3f2b90370efd71862f838d1

nodejs爬蟲非同步資料案例

在csdn上圖片顯示有問題,可以去我的個人部落格上檢視原版: http://tosim.top/2017/07/21/nodejs%E7%88%AC%E8%99%AB%E6%8A%93%E5%8F%96%E5%BC%82%E6%AD%A5%E6%95%B0%E

java爬蟲資料,儲存為excel檔案

下載jsoup jar包和poi jar包 City.java package dataToExcel; public class City { private String name; private String url;

最新python爬蟲新浪微博千萬級資料,scrapy思路+架構+原始碼

1.1 爬取目標 爬取的目標是新浪微博使用者的公開基本資訊,如使用者暱稱、頭像、使用者的關注、粉絲列表以及釋出的微博等 1.2 準備工作     代理池、 Cookies 池已經實現並可以正常執行,安裝 Scrap

node.js 小爬蟲網頁資料(2)

node.js 小爬蟲抓取網頁資料 在原來的基礎上,採用了promise的模組,使其可以一次性多頁面的爬取網頁資料。 var http = require('http') var Promise = require('promise') var cheerio = re

Java簡單實現爬蟲技術,整個網站所有連結+圖片+檔案(思路+程式碼)

寫這個純屬個人愛好,前兩天想玩爬蟲,但是百度了一大圈也沒發現有好一點的帖子,所以就自己研究了下,親測小點的網站還是能隨隨便便爬完的,由於是單執行緒所以速度嘛~~你懂的 (多執行緒沒學好,後期再慢慢加上多執行緒吧) 先上幾張效果圖 ##需要用到的知識點

Python selenium爬蟲船舶網站資料(動態頁面)

很早之前就開始學習爬蟲了,一直想學習爬取動態頁面,正巧工作中需要用到一個船舶資訊的網站,每次都是手動查詢太麻煩了,昨天下午研究了一下午,總算搞透徹了,基本步驟如下: 1、啟動瀏覽器 2、開啟網頁 3、模擬輸入,模擬點選 4、稍等一會(很重要) 5、獲取

如果你不會Python多程序!那你會爬蟲?扯淡!拉鉤網十萬資料

這篇文章我們來抓取 拉鉤網 的招聘資訊。全部抓取大概十幾萬條全國招聘資訊,並且儲存資料庫。準備安裝Mongodb資料庫其實不是一定要使用MongoDB,大家完全可以使用MySQL或者Redis,全看大家喜好。這篇文章我們的例子是Mongodb,所以大家需要 下載 它。最後我們需要開啟管理員許可權的 CMD 視

使用selenium爬蟲資料

寫在前面 本來這篇文章該幾個月前寫的,後來忙著忙著就給忘記了。ps:事多有時候反倒會耽誤事。幾個月前,記得群裡一朋友說想用selenium去爬資料,關於爬資料,一般是模擬訪問某些固定網站,將自己關注的資訊進行爬取,然後再將爬出的資料進行處理。他的需求是將文章直接匯入到富文字編輯器去釋出,其實這也是爬蟲中的一