日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

爬虫抓取糯米网上所有商家数据

發布時間:2024/9/20 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 爬虫抓取糯米网上所有商家数据 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前段時間寫了 爬取美團商家信息的博客?爬蟲抓取美團網上所有商家信息?,這次說說爬取糯米網,由于某些原因無法提供源代碼,但是,代碼不是關鍵,最關鍵的是思想,懂了思想,代碼是很容易寫的.

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

分析是否需要處理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就是地區.提前收集這些數據后面爬取的時候直接拼接就可以,方便快捷.

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

再遍歷區縣,獲取商圈,再遍歷,最后就可以獲取團購數據

[python]?view plaincopy
  • #?區/縣??
  • 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

    https://blog.csdn.net/u013243986/article/details/69062941

    總結

    以上是生活随笔為你收集整理的爬虫抓取糯米网上所有商家数据的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。