app采集的10个经典方法
app采集的抓取數(shù)據(jù)、app抓包、網(wǎng)頁(yè)爬蟲、采集網(wǎng)站數(shù)據(jù)、app數(shù)據(jù)采集軟件、python爬蟲、HTM網(wǎng)頁(yè)提取、APP數(shù)據(jù)抓包、APP數(shù)據(jù)采集、一站式網(wǎng)站采集技術(shù)、BI數(shù)據(jù)的數(shù)據(jù)分析、數(shù)據(jù)標(biāo)注等成為大數(shù)據(jù)發(fā)展中的熱門技術(shù)關(guān)鍵詞。那么app采集數(shù)據(jù)的方法有哪些呢?我給大家分享一下,我爬蟲的個(gè)人經(jīng)驗(yàn),我們?cè)诓杉愃芶pp采集網(wǎng)站數(shù)據(jù)的時(shí)候會(huì)遇到什么技術(shù)問(wèn)題,然后再根據(jù)這些問(wèn)題給大家分享采集方案.
一、寫爬蟲采集網(wǎng)站之前:
為什么經(jīng)常聽到有些網(wǎng)站的域名被劫持、服務(wù)器被heike gongji、數(shù)據(jù)庫(kù)被盜等
大家平時(shí)登錄一個(gè)網(wǎng)站,記的都是類似www.baidu.com這樣的網(wǎng)址。這叫做域名(domain name)。輸入域名后是需要先通過(guò)DNS服務(wù)器來(lái)解析識(shí)別這個(gè)域名對(duì)應(yīng)的服務(wù)器IP地址,每家公司網(wǎng)站的程序和數(shù)據(jù)都是放在自己服務(wù)器上的(如阿里云服務(wù)器或者自己購(gòu)買的服務(wù)器),每個(gè)服務(wù)器有一個(gè)IP地址,只要知道這個(gè)IP地址,就可以訪問(wèn)到這個(gè)網(wǎng)站(特殊情況除外,比如設(shè)置了禁止IP訪問(wèn)權(quán)限)。
(1)域名解析過(guò)程:輸入www.baidu.com這網(wǎng)址(域名)怎么就可以訪問(wèn)到對(duì)應(yīng)的網(wǎng)站呢?那是因?yàn)槿绻枰屇蛎梢哉J褂?#xff0c;就必須先把域名和您網(wǎng)站的服務(wù)器IP地址綁定在一起,以后用戶在瀏覽器只要輸入這個(gè)域名就等于輸入您這個(gè)服務(wù)器IP地址了,這個(gè)綁定的過(guò)程叫做域名解析,互聯(lián)網(wǎng)有13臺(tái)DNS根服務(wù)器,專門來(lái)做域名解析,其中10臺(tái)在美國(guó)(包括一臺(tái)主根服務(wù)器),另外3臺(tái)根服務(wù)器分別在英國(guó)、瑞典、日本,而中國(guó)一臺(tái)都沒(méi)有,那么,大家的擔(dān)憂隨之而來(lái):很多朋友問(wèn)我,如果美國(guó)的根服務(wù)器不為中國(guó)提供服務(wù)了,中國(guó)是不是就從網(wǎng)絡(luò)上消失了?網(wǎng)站還能訪問(wèn)嗎?其實(shí)域名服務(wù)器只是解析域作用而已,如果沒(méi)有域名我們可以用IP訪問(wèn)網(wǎng)站,只是用IP訪問(wèn)記起來(lái)不方便而已,域名也就一個(gè)別名容易記住的簡(jiǎn)稱的作用而已,例如103.235.46.39。這叫做IP地址,即Internet Protocol Address,互聯(lián)網(wǎng)協(xié)議地址。比如輸入 ping??www.baidu.com可以查到百度這個(gè)網(wǎng)址解析綁定到的是哪個(gè)服務(wù)器的IP地址。
從上面可以知道百度的IP地址為:103.235.46.39。當(dāng)您知道這個(gè)網(wǎng)址的服務(wù)器IP地址時(shí)候,您在瀏覽器輸入網(wǎng)址和您在瀏覽器輸入這個(gè)IP地址 都是可以訪問(wèn)到這個(gè)網(wǎng)站的(除非有些禁止IP訪問(wèn)),
通過(guò)這個(gè)手段,我們后面在做網(wǎng)站數(shù)據(jù)采集爬蟲的時(shí)就可以直接請(qǐng)求IP地址去采集數(shù)據(jù)了,可以繞過(guò)網(wǎng)址直搗皇宮了,就算網(wǎng)址更換了,但是服務(wù)器是不變的,我們一樣找到它網(wǎng)站老巢,采集它的數(shù)據(jù)。
(2)域名劫持爬蟲技術(shù): 域名劫持是互聯(lián)網(wǎng)攻gongji的一種方式,通過(guò)gongji域名解析服務(wù)器(DNS),實(shí)現(xiàn)劫持,因?yàn)槿绻L問(wèn)www.baidu.com 就必先經(jīng)過(guò)DNS域名解析服務(wù)器來(lái)解析這個(gè)網(wǎng)址對(duì)應(yīng)那臺(tái)服務(wù)器IP地址。如果在這個(gè)過(guò)程有heike想攻您網(wǎng)站,比如heike想gongji百度,就可以在這個(gè)DNS解析域名環(huán)節(jié)做手腳,比如我想讓所有用戶打開www.baidu.com 直接訪問(wèn)的是我的廣告網(wǎng)站,而不是百度自己服務(wù)器里面的網(wǎng)站網(wǎng)頁(yè)。那很簡(jiǎn)單,那只要在DNS 解析百度這個(gè)網(wǎng)址的時(shí)候把對(duì)應(yīng)的百度服務(wù)器IP地址 修改解析到您自己的網(wǎng)站服務(wù)器IP地址去,那么所有人打開這個(gè)baidu.com網(wǎng)址就實(shí)際就是打開您的網(wǎng)站了。這個(gè)過(guò)程就叫域名劫持,這種技術(shù)已經(jīng)不是爬蟲技術(shù)是高級(jí)的heike技術(shù)了。
(3)釣魚網(wǎng)站爬蟲技術(shù):通過(guò)域名劫持技術(shù),很多人heike去劫持銀行網(wǎng)站、支付寶網(wǎng)站、充值交易的網(wǎng)站等,比如他們先做一個(gè)和銀行一模一樣的網(wǎng)站,功能和長(zhǎng)相和銀行的一模一樣,這個(gè)網(wǎng)站我們稱呼釣魚網(wǎng)站,用戶打開銀行網(wǎng)址時(shí)候,其實(shí)已經(jīng)被劫持走了,真正訪問(wèn)的是他們提供的釣魚網(wǎng)站,但是因?yàn)榫W(wǎng)址是一樣的,網(wǎng)站長(zhǎng)相也是一樣的,用戶壓根不會(huì)識(shí)別出來(lái),等您輸入銀行賬號(hào)密碼后,您的銀行卡的錢估計(jì)就自動(dòng)被轉(zhuǎn)走了,因?yàn)橐呀?jīng)知道您的賬號(hào)密碼了。對(duì)技術(shù)感興趣朋友歡迎交流我扣扣:2779571288
二、網(wǎng)站數(shù)據(jù)采集的10個(gè)經(jīng)典方法:
?我們平時(shí)說(shuō)的采集網(wǎng)站數(shù)據(jù)、數(shù)據(jù)抓取等,其實(shí)不是真正的采集數(shù)據(jù),在我們的職業(yè)里這個(gè)最多算是正則表達(dá)式,網(wǎng)頁(yè)源代碼解析而已,談不上爬蟲采集技術(shù)難度,因?yàn)檫@種抓取主要是采集瀏覽器打開可以看到的數(shù)據(jù),這個(gè)數(shù)據(jù)叫做html頁(yè)面數(shù)據(jù),比如您打開:www.jintancn.com這個(gè)網(wǎng)址,然后鍵盤按F12?,可以直接看到這個(gè)網(wǎng)址的所有數(shù)據(jù)和源代碼,這個(gè)網(wǎng)站主要是提供一些爬蟲技術(shù)服務(wù)和定制,里面有些免費(fèi)新工商數(shù)據(jù),如果需要采集它數(shù)據(jù),你可以寫個(gè)正則匹配規(guī)則html標(biāo)簽,進(jìn)行截取我們需要的字段信息即可。下面給大家總結(jié)一下采集類似這種工商、天眼、商標(biāo)、專利、亞馬遜、淘寶、app等普遍網(wǎng)站常用的幾個(gè)方法,掌握這些訪問(wèn)幾乎解決了90%的數(shù)據(jù)采集問(wèn)題了。
?方法一: 用python的request方法
???????用python的request方法,直接原生態(tài)代碼,python感覺(jué)是為了爬蟲和大數(shù)據(jù)而生的,我平時(shí)做的網(wǎng)絡(luò)分布式爬蟲、圖像識(shí)別、AI模型都是用python,因?yàn)閜ython有很多現(xiàn)存的庫(kù)直接可以調(diào)用,比如您需要做個(gè)簡(jiǎn)單爬蟲,比如我想采集百度 幾行代碼就可以搞定了,核心代碼如下:
import requests ?#引用reques庫(kù)
response=request.get(‘http://www.baidu.com’)#用get模擬請(qǐng)求
print(response.text) ?#已經(jīng)采集出來(lái)了,也許您會(huì)覺(jué)好神奇!
方法二、用selenium模擬瀏覽器
selenium是一個(gè)專門采集反爬很厲害的網(wǎng)站經(jīng)常使用的工具,它主要是可以模擬瀏覽器去打開訪問(wèn)您需要采集的目標(biāo)網(wǎng)站了,比如您需要采集天眼查或者企查查或者是淘寶、58、京東等各種商業(yè)的網(wǎng)站,那么這種網(wǎng)站服務(wù)端做了反爬技術(shù)了,如果您還是用python的request.get方法就容易被識(shí)別,被封IP。這個(gè)時(shí)候如果您對(duì)數(shù)據(jù)采集速度要求不太高,比如您一天只是采集幾萬(wàn)條數(shù)據(jù)而已,那么這個(gè)工具是非常適合的。我當(dāng)時(shí)在處理商標(biāo)網(wǎng)時(shí)候也是用selenum,后面改用JS逆向了,如果您需要采集幾百萬(wàn)幾千萬(wàn)怎么辦呢?下面的方法就可以用上了。
方法三、用scrapy進(jìn)行分布式高速采集
Scrapy是適用于Python的一個(gè)快速、高層次的屏幕抓取和web抓取框架,用于抓取web站點(diǎn)并從頁(yè)面中提取結(jié)構(gòu)化的數(shù)據(jù)。scrapy 特點(diǎn)是異步高效分布式爬蟲架構(gòu),可以開多進(jìn)程 多線程池進(jìn)行批量分布式采集。 比如您想采集1000萬(wàn)的數(shù)據(jù),您就可以多設(shè)置幾個(gè)結(jié)點(diǎn)和線程。Scrapy也有缺點(diǎn)的,它基于 twisted 框架,運(yùn)行中的 exception 是不會(huì)干掉 reactor(反應(yīng)器),并且異步框架出錯(cuò)后 是不會(huì)停掉其他任務(wù)的,數(shù)據(jù)出錯(cuò)后難以察覺(jué)。我2019年在做企業(yè)知識(shí)圖譜建立的時(shí)候就是用這個(gè)框架,因?yàn)橐瓿?.8億的全量工商企業(yè)數(shù)據(jù)采集和建立關(guān)系,維度比天眼還要多,主要是時(shí)候更新要求比天眼快。對(duì)技術(shù)感興趣朋友歡迎交流我扣扣:2779571288
方法四:用Crawley
Crawley也是python開發(fā)出的爬蟲框架,該框架致力于改變?nèi)藗儚幕ヂ?lián)網(wǎng)中提取數(shù)據(jù)的方式。它是基于Eventlet構(gòu)建的高速網(wǎng)絡(luò)爬蟲框架、可以將爬取的數(shù)據(jù)導(dǎo)入為Json、XML格式。支持非關(guān)系數(shù)據(jù)跨、支持使用Cookie登錄或訪問(wèn)那些只有登錄才可以訪問(wèn)的網(wǎng)頁(yè)。
方法五:用PySpider
相對(duì)于Scrapy框架而言,PySpider框架是一支新秀。它采用Python語(yǔ)言編寫,分布式架構(gòu),支持多種數(shù)據(jù)庫(kù)后端,強(qiáng)大的WebUI支持腳本編輯器、任務(wù)監(jiān)視器、項(xiàng)目管理器以及結(jié)果查看器。 PPySpider的特點(diǎn)是ython腳本控制,可以用任何你喜歡的html解析包,Web界面編寫調(diào)試腳本、起停腳本、監(jiān)控執(zhí)行狀態(tài)、查看活動(dòng)歷史,并且支持RabbitMQ、Beanstalk、Redis和Kombu作為消息隊(duì)列。用它做個(gè)兩個(gè)外貿(mào)網(wǎng)站采集的項(xiàng)目,感覺(jué)還不錯(cuò)。
方法六:用Aiohttp
Aiohttp 是純粹的異步框架,同時(shí)支持 HTTP 客戶端和 HTTP 服務(wù)端,可以快速實(shí)現(xiàn)異步爬蟲。坑比其他框架少。并且 aiohttp 解決了requests 的一個(gè)痛點(diǎn),aiohttp 可以輕松實(shí)現(xiàn)自動(dòng)轉(zhuǎn)碼,對(duì)于中文編碼就很方便了。這個(gè)做異步爬蟲很不錯(cuò),我當(dāng)時(shí)對(duì)幾個(gè)淘寶網(wǎng)站異步檢測(cè)商城里面的商品和價(jià)格變化后處理時(shí)用過(guò)一段時(shí)間。
方法七:asks
Python 自帶一個(gè)異步的標(biāo)準(zhǔn)庫(kù) asyncio,但是這個(gè)庫(kù)很多人覺(jué)得不好用,甚至是 Flask 庫(kù)的作者公開抱怨自己花了好長(zhǎng)時(shí)間才理解這玩意,于是就有好事者撇開它造了兩個(gè)庫(kù)叫做 curio 和 trio,而這里的 ask 則是封裝了 curio 和 trio 的一個(gè) http 請(qǐng)求庫(kù)。
方法八:vibora
號(hào)稱是現(xiàn)在最快的異步請(qǐng)求框架,跑分是最快的。寫爬蟲、寫服務(wù)器響應(yīng)都可以用,用過(guò)1個(gè)月后 就很少用了。
方法九:Pyppeteer
Pyppeteer 是異步無(wú)頭瀏覽器(Headless Chrome),從跑分來(lái)看比 Selenium + webdriver 快,使用方式是最接近于瀏覽器的自身的設(shè)計(jì)接口的。它本身是來(lái)自 Google 維護(hù)的 puppeteer。我經(jīng)常使用它來(lái)提高selenium采集的一些反爬比較厲害的網(wǎng)站 比如裁判文書網(wǎng),這種網(wǎng)站反爬識(shí)別很厲害。
方法十:Fiddle++node JS逆向+request ?(采集APP必用)
Fiddler是一個(gè)蠻好用的抓包工具,可以將網(wǎng)絡(luò)傳輸發(fā)送與接受的數(shù)據(jù)包進(jìn)行截獲、重發(fā)、編輯、轉(zhuǎn)存等操作。我們?cè)诓杉硞€(gè)app時(shí)候,一般是先用Fiddler抓包 找到這個(gè)app請(qǐng)求這個(gè)數(shù)據(jù)時(shí)候調(diào)取的是后臺(tái)的那個(gè)接口地址,找到這個(gè)地址和請(qǐng)求的參數(shù)然后再模擬request。今年在處理快手、抖音的粉絲、評(píng)價(jià)、商品店鋪銷量時(shí)候就用到了Fiddle。某些APP 和網(wǎng)站的參數(shù)是通過(guò)js加密的,比如商標(biāo)網(wǎng)、裁判文書網(wǎng)、抖音快手等這些。您如果需要請(qǐng)求它的源api地址就的逆向解析破解這些加密參數(shù),可以使用node解析混淆函數(shù)。因?yàn)槠綍r(shí)需要經(jīng)常采集一些app,所以和Fiddler打交道的比較多。
前面主要是對(duì)網(wǎng)站和APP 數(shù)據(jù)采集和解析的一些方法,其實(shí)對(duì)這種網(wǎng)站爬蟲技術(shù)說(shuō)無(wú)非就解決三個(gè)問(wèn)題:首先是封IP問(wèn)題,您可以自建代理IP池解決這個(gè)問(wèn)題的,第二個(gè)問(wèn)題就是驗(yàn)證碼問(wèn)題,這個(gè)問(wèn)題可以通過(guò)python的圖像識(shí)別技術(shù)來(lái)解決或者是您直接調(diào)取第三方的打碼平臺(tái)解決。第三問(wèn)題就是需要會(huì)員賬號(hào)登錄后才看到的數(shù)據(jù),這個(gè)很簡(jiǎn)單直接用cookie池解決。對(duì)技術(shù)感興趣朋友歡迎交流我扣扣:2779571288。
總結(jié)
以上是生活随笔為你收集整理的app采集的10个经典方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python和C语言分别实现插入排序
- 下一篇: 文件服务器存储解决方案探索