成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

爬蟲的一些知識(shí)羅列

elva / 3060人閱讀

摘要:蠻荒時(shí)代遇到加密的網(wǎng)頁(yè)爬取是將混淆之后的加密代碼強(qiáng)行還原為代碼,很累現(xiàn)在有了這個(gè)方便的庫(kù),能夠輕松很多,轉(zhuǎn)工具移動(dòng)端抓取替代網(wǎng)頁(yè)端不少網(wǎng)站移動(dòng)端的接口訪問(wèn)比網(wǎng)頁(yè)端簡(jiǎn)單多,反爬也弱一些,比如拉鉤網(wǎng)。

什么是爬蟲

用我自己的話來(lái)總結(jié)就是通過(guò)模擬客戶端訪問(wèn)服務(wù)器獲取數(shù)據(jù)的工具。爬蟲的簡(jiǎn)易模型如下:

網(wǎng)站服務(wù)器是我們要訪問(wèn)的目標(biāo),主要用來(lái)制定訪問(wèn)規(guī)則(也就是我們應(yīng)該如何模擬可以訪問(wèn)該服務(wù)器的用戶以及如何訪問(wèn)網(wǎng)站上的數(shù)據(jù))

爬蟲通過(guò)http或者h(yuǎn)ttps協(xié)議與網(wǎng)站服務(wù)器交互

我們做的主要工作是在定制爬蟲腳本,盡可能的模仿客戶端的訪問(wèn)

本地存儲(chǔ)的選擇很多,可以是文件的形式,也可以存儲(chǔ)到數(shù)據(jù)庫(kù)中

爬蟲可能會(huì)涉及的技術(shù)羅列

可以當(dāng)做檢索的清單

圖片是我以前學(xué)習(xí)爬蟲的時(shí)候收藏的,具體來(lái)源已經(jīng)記不得了

下面這張是簡(jiǎn)易版的參考,打鉤的是我已經(jīng)使用過(guò)和掌握的

爬蟲技巧分享

由于網(wǎng)站開發(fā)人員使用技術(shù)不同和網(wǎng)站運(yùn)維人員對(duì)訪問(wèn)的限制沒有固定的爬蟲模板,而且爬蟲是需要長(zhǎng)期維護(hù)的工程,一旦網(wǎng)頁(yè)中的一個(gè)class屬性發(fā)生改變或者api接口參數(shù)變化都需要修改爬蟲。但是一些技巧是可以借鑒的。

robots.txt

robots.txt是與搜索引擎約定的君子協(xié)議,他能夠可我們提供一些網(wǎng)站的信息。 下面是掘金的robots.txt ,我們可以收獲以下信息

允許的User-agent是匹配所有,有時(shí)候爬蟲失效可能是UA的問(wèn)題,這里也許能找到答案

Request-rate: 1/1 建議1秒鐘爬取一個(gè)頁(yè)面 (那我想你設(shè)置延時(shí)應(yīng)該心里有數(shù)了)

Crawl-delay: 5 建議爬蟲詢問(wèn)的頻率是5秒一次

Disallow 是不允許爬取的目錄,這里基本上可以告訴我們有哪些子路徑

User-agent: *
Request-rate: 1/1
Crawl-delay: 5

Disallow: /timeline
Disallow: /submit-entry
Disallow: /new-entry
Disallow: /edit-entry
Disallow: /notification
Disallow: /subscribe/subscribed
Disallow: /user/settings
Disallow: /reset-password
Disallow: /drafts
Disallow: /editor
Disallow: /user/invitation
Disallow: /user/wallet
Disallow: /entry/*/view$
Disallow: /auth
Disallow: /oauth
Disallow: /zhuanlan/*");
curl

curl是命令行下的文件傳輸工具,這里拿出來(lái)是因?yàn)榘l(fā)現(xiàn)了一個(gè)好的工具 curl.trillworks.com/#python 可以直接將curl腳本轉(zhuǎn)成python requests庫(kù)的請(qǐng)求方式。

使用方法:
(1)打開chrome的開發(fā)者工具
(2)選擇想要訪問(wèn)的鏈接,然后 copy -> copy as cURL(bash)
(3)粘貼到上面的那個(gè)網(wǎng)址中就可以得到簡(jiǎn)易爬蟲腳本

使用 Katalon Recorder

有時(shí)候我們會(huì)使用Selenium工具模擬瀏覽器進(jìn)行數(shù)據(jù)爬取,但是苦于自己寫與瀏覽器交互的腳本。這里推薦一個(gè)工具 Katalon Recorder可以方便的產(chǎn)生交互腳本,在模擬搜索、模擬登陸、滾動(dòng)、點(diǎn)擊的時(shí)候都很有效。是一個(gè)瀏覽器插件,chrome和Firefox都有。使用起來(lái)也很簡(jiǎn)單

(1) 先new一個(gè)新的錄制
(2) 開始錄制 record,這時(shí)候你可以與網(wǎng)頁(yè)交互,這個(gè)插件會(huì)記錄你的操作(從加載網(wǎng)頁(yè)到停止錄制)
(3) 停止錄制之后,點(diǎn)擊export,選擇自己喜歡的語(yǔ)言導(dǎo)出就行

下面這一段是我們實(shí)際使用的時(shí)候需要用到的,這樣就不用自己去編寫交互腳本了

一種簡(jiǎn)單的反爬技術(shù)

目前很多博客網(wǎng)站的next操作是根據(jù)上一次請(qǐng)求的最后一條數(shù)據(jù)的某個(gè)id作為下一次請(qǐng)求的參數(shù),不仔細(xì)看還發(fā)現(xiàn)不了(也虧返回的json字段命名語(yǔ)義化),典型網(wǎng)站有簡(jiǎn)書和掘金,文章列表頁(yè),請(qǐng)求的時(shí)候是根據(jù)上一次請(qǐng)求的最后一篇文章的信息作為下一次獲取數(shù)據(jù)的請(qǐng)求參數(shù)。

js2py

蠻荒時(shí)代遇到j(luò)s加密的網(wǎng)頁(yè)爬取是將混淆之后的js加密代碼強(qiáng)行還原為py代碼,很累~~現(xiàn)在有了js2py這個(gè)方便的python庫(kù),能夠輕松很多,js轉(zhuǎn)py工具

移動(dòng)端抓取替代網(wǎng)頁(yè)端

不少網(wǎng)站移動(dòng)端的接口訪問(wèn)比網(wǎng)頁(yè)端簡(jiǎn)單多,反爬也弱一些,比如拉鉤網(wǎng)。 這里有一個(gè)知識(shí)點(diǎn):不少網(wǎng)站在處理請(qǐng)求的時(shí)候會(huì)根據(jù)UA來(lái)判斷客戶端類型,然后返回PC端頁(yè)面或者移動(dòng)端頁(yè)面(案例:拉鉤網(wǎng)) 利用這個(gè),我們可以將chrome的開發(fā)者模式調(diào)節(jié)為手機(jī)模式,這樣就可以獲取到移動(dòng)端的接口,你會(huì)發(fā)現(xiàn)頁(yè)面也簡(jiǎn)潔了接口也簡(jiǎn)單了~

注:隨著前端技術(shù)的發(fā)展,適配多端的頁(yè)面也開始流行,所以前端牛逼

兩個(gè)思考 為什么爬蟲要設(shè)置User-Agent

統(tǒng)計(jì)訪問(wèn)頻率的時(shí)候有一部分是依賴于ua

有時(shí)候需要根據(jù)ua返回不同的代碼

對(duì)于前端還需要拿去判斷使用兼容性代碼

host

很多時(shí)候會(huì)設(shè)置HOST這個(gè)字段,其實(shí)可以這樣理解,我們?cè)L問(wèn)的時(shí)候使用的是域名,但是http協(xié)議訪問(wèn)的時(shí)候使用的是ip,存在一臺(tái)服務(wù)器上有多個(gè)服務(wù),這樣多個(gè)域名會(huì)解析成一個(gè)ip,當(dāng)服務(wù)器接收到這個(gè)請(qǐng)求的時(shí)候他需要考慮由哪個(gè)服務(wù)來(lái)處理(正常是反向代理判斷請(qǐng)求的路徑然后正則匹配轉(zhuǎn)發(fā)請(qǐng)求),但是我自己假想了一下也可以用host來(lái)判斷轉(zhuǎn)發(fā)(這個(gè)啟發(fā)來(lái)源于Access-Control-Allow-Origin只能設(shè)置一個(gè)值,當(dāng)需要設(shè)置多個(gè)值的時(shí)候我使用host字段+白名單來(lái)動(dòng)態(tài)設(shè)置的)


作為筆記記錄!感謝您與我一起虛度時(shí)光

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/7270.html

相關(guān)文章

  • [雜談]了解一些額外知識(shí),讓前端開發(fā)錦上添花

    摘要:對(duì)的請(qǐng)求,也是要有一個(gè)了解,比如協(xié)議,請(qǐng)求方式,請(qǐng)求過(guò)程,結(jié)果狀態(tài)碼等。教程協(xié)議詳解經(jīng)典面試題一個(gè)故事講完響應(yīng)狀態(tài)碼上面提到響應(yīng)狀態(tài)碼,在這里也簡(jiǎn)單寫下。 勸了別人無(wú)數(shù)次,讓別人喝了雞湯,幫別人填坑,自己卻掉了坑 1.前言 在前端學(xué)習(xí)里面,很多人都是注重學(xué)習(xí)代碼(html,css,js)?;蛘呤且恍┛蚣埽瑤?kù)(jquery,vue,react),或者是各種工具(webpack,gulp)...

    vvpvvp 評(píng)論0 收藏0
  • [雜談]了解一些額外知識(shí),讓前端開發(fā)錦上添花

    摘要:對(duì)的請(qǐng)求,也是要有一個(gè)了解,比如協(xié)議,請(qǐng)求方式,請(qǐng)求過(guò)程,結(jié)果狀態(tài)碼等。教程協(xié)議詳解經(jīng)典面試題一個(gè)故事講完響應(yīng)狀態(tài)碼上面提到響應(yīng)狀態(tài)碼,在這里也簡(jiǎn)單寫下。 勸了別人無(wú)數(shù)次,讓別人喝了雞湯,幫別人填坑,自己卻掉了坑 1.前言 在前端學(xué)習(xí)里面,很多人都是注重學(xué)習(xí)代碼(html,css,js)。或者是一些框架,庫(kù)(jquery,vue,react),或者是各種工具(webpack,gulp)...

    張率功 評(píng)論0 收藏0
  • [雜談]了解一些額外知識(shí),讓前端開發(fā)錦上添花

    摘要:對(duì)的請(qǐng)求,也是要有一個(gè)了解,比如協(xié)議,請(qǐng)求方式,請(qǐng)求過(guò)程,結(jié)果狀態(tài)碼等。教程協(xié)議詳解經(jīng)典面試題一個(gè)故事講完響應(yīng)狀態(tài)碼上面提到響應(yīng)狀態(tài)碼,在這里也簡(jiǎn)單寫下。 勸了別人無(wú)數(shù)次,讓別人喝了雞湯,幫別人填坑,自己卻掉了坑 1.前言 在前端學(xué)習(xí)里面,很多人都是注重學(xué)習(xí)代碼(html,css,js)?;蛘呤且恍┛蚣?,庫(kù)(jquery,vue,react),或者是各種工具(webpack,gulp)...

    zhichangterry 評(píng)論0 收藏0
  • 干貨 | 學(xué)習(xí)Python正確姿勢(shì)

    摘要:勤學(xué)學(xué)習(xí)效率與效果取決于執(zhí)行力。這一步學(xué)習(xí)的正確姿勢(shì)是在實(shí)踐操作中發(fā)掘問(wèn)題,然后帶著問(wèn)題找答案。拆分任務(wù)將目標(biāo)分解成具體可執(zhí)行的學(xué)習(xí)任務(wù)。勤學(xué)強(qiáng)大的執(zhí)行力是學(xué)習(xí)的根本保障。分享復(fù)述檢驗(yàn)學(xué)習(xí)成果,提高學(xué)習(xí)效果的最好方法。 showImg(https://segmentfault.com/img/bVbcPGZ?w=256&h=256); 前段時(shí)間和大家一起分享了一篇關(guān)于學(xué)習(xí)方法內(nèi)容《大牛...

    Thanatos 評(píng)論0 收藏0
  • Python

    摘要:最近看前端都展開了幾場(chǎng)而我大知乎最熱語(yǔ)言還沒有相關(guān)。有關(guān)書籍的介紹,大部分截取自是官方介紹。但從開始,標(biāo)準(zhǔn)庫(kù)為我們提供了模塊,它提供了和兩個(gè)類,實(shí)現(xiàn)了對(duì)和的進(jìn)一步抽象,對(duì)編寫線程池進(jìn)程池提供了直接的支持。 《流暢的python》閱讀筆記 《流暢的python》是一本適合python進(jìn)階的書, 里面介紹的基本都是高級(jí)的python用法. 對(duì)于初學(xué)python的人來(lái)說(shuō), 基礎(chǔ)大概也就夠用了...

    dailybird 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<