日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

金九銀十,你準(zhǔn)備好了嗎?沒點Python面試題干貨怎么行?(一)

 千鋒Python學(xué)堂 2019-09-11

職場人沒有不知道:金三銀四,金九銀十 的說法兒吧,今天干貨奉上,100個Python面試高頻題目。

金九銀十,你準(zhǔn)備好了嗎?沒點Python面試題干貨怎么行?(一)

一. 遇到過得反爬蟲策略以及解決方法?

1.通過headers反爬蟲

2.基于用戶行為的發(fā)爬蟲:(同一IP短時間內(nèi)訪問的頻率)

3.動態(tài)網(wǎng)頁反爬蟲(通過ajax請求數(shù)據(jù),或者通過JavaScript生成)

4.對部分?jǐn)?shù)據(jù)進(jìn)行加密處理的(數(shù)據(jù)是亂碼)

解決方法:

對于基本網(wǎng)頁的抓取可以自定義headers,添加headers的數(shù)據(jù)

使用多個代理ip進(jìn)行抓取或者設(shè)置抓取的頻率降低一些,

動態(tài)網(wǎng)頁的可以使用selenium + phantomjs 進(jìn)行抓取

對部分?jǐn)?shù)據(jù)進(jìn)行加密的,可以使用selenium進(jìn)行截圖,使用python自帶的pytesseract庫進(jìn)行識別,但是比較慢最直接的方法是找到加密的方法進(jìn)行逆向推理。

二. urllib 和 urllib2 的區(qū)別?

  • urllib 和urllib2都是接受URL請求的相關(guān)模塊,但是urllib2可以接受一個Request類的實例來設(shè)置URL請求的headers,urllib僅可以接受URL。urllib不可以偽裝你的User-Agent字符串。

  • urllib提供urlencode()方法用來GET查詢字符串的產(chǎn)生,而urllib2沒有。這是為何urllib常和urllib2一起使用的原因。

三. 列舉網(wǎng)絡(luò)爬蟲所用到的網(wǎng)絡(luò)數(shù)據(jù)包,解析包?

  • 網(wǎng)絡(luò)數(shù)據(jù)包 urllib、urllib2、requests

  • 解析包 re、xpath、beautiful soup、lxml

四. 簡述一下爬蟲的步驟?

  1. 確定需求;

  2. 確定資源;

  3. 通過url獲取網(wǎng)站的返回數(shù)據(jù);

  4. 定位數(shù)據(jù);

  5. 存儲數(shù)據(jù)。

五. 遇到反爬機(jī)制怎么處理?

反爬機(jī)制:

headers方向

判斷User-Agent、判斷Referer、判斷Cookie。

將瀏覽器的headers信息全部添加進(jìn)去

注意:Accept-Encoding;gzip,deflate需要注釋掉

六. 常見的HTTP方法有哪些?

  • GET:請求指定的頁面信息,返回實體主體;

  • HEAD:類似于get請求,只不過返回的響應(yīng)中沒有具體的內(nèi)容,用于捕獲報頭;

  • POST:向指定資源提交數(shù)據(jù)進(jìn)行處理請求(比如表單提交或者上傳文件),。數(shù)據(jù)被包含在請求體中。

  • PUT:從客戶端向服務(wù)端傳送數(shù)據(jù)取代指定的文檔的內(nèi)容;

  • DELETE:請求刪除指定的頁面;

  • CONNNECT:HTTP1.1協(xié)議中預(yù)留給能夠?qū)⑦B接方式改為管道方式的代理服務(wù)器;

  • OPTIONS:允許客戶端查看服務(wù)器的性能;

  • TRACE:回顯服務(wù)器的請求,主要用于測試或者診斷。

七. 說一說redis-scrapy中redis的作用?

它是將scrapy框架中Scheduler替換為redis數(shù)據(jù)庫,實現(xiàn)隊列管理共享。

優(yōu)點:

  1. 可以充分利用多臺機(jī)器的帶寬;

  2. 可以充分利用多臺機(jī)器的IP地址。

八. 遇到的反爬蟲策略以及解決方法?

  1. 通過headers反爬蟲:自定義headers,添加網(wǎng)頁中的headers數(shù)據(jù)。

  2. 基于用戶行為的反爬蟲(封IP):可以使用多個代理IP爬取或者將爬取的頻率降低。

  3. 動態(tài)網(wǎng)頁反爬蟲(JS或者Ajax請求數(shù)據(jù)):動態(tài)網(wǎng)頁可以使用 selenium + phantomjs 抓取。

  4. 對部分?jǐn)?shù)據(jù)加密處理(數(shù)據(jù)亂碼):找到加密方法進(jìn)行逆向推理。

九. 如果讓你來防范網(wǎng)站爬蟲,你應(yīng)該怎么來提高爬取的難度 ?

  1. 判斷headers的User-Agent;

  2. 檢測同一個IP的訪問頻率;

  3. 數(shù)據(jù)通過Ajax獲??;

  4. 爬取行為是對頁面的源文件爬取,如果要爬取靜態(tài)網(wǎng)頁的html代碼,可以使用jquery去模仿寫html。

十. scrapy分為幾個組成部分?分別有什么作用?

分為5個部分;Spiders(爬蟲類),Scrapy Engine(引擎),Scheduler(調(diào)度器),Downloader(下載器),Item Pipeline(處理管道)。

  • Spiders:開發(fā)者自定義的一個類,用來解析網(wǎng)頁并抓取指定url返回的內(nèi)容。

  • Scrapy Engine:控制整個系統(tǒng)的數(shù)據(jù)處理流程,并進(jìn)行事務(wù)處理的觸發(fā)。

  • Scheduler:接收Engine發(fā)出的requests,并將這些requests放入到處理列隊中,以便之后engine需要時再提供。

  • Download:抓取網(wǎng)頁信息提供給engine,進(jìn)而轉(zhuǎn)發(fā)至Spiders。

  • Item Pipeline:負(fù)責(zé)處理Spiders類提取之后的數(shù)據(jù)。

  • 比如清理HTML數(shù)據(jù)、驗證爬取的數(shù)據(jù)(檢查item包含某些字段)、查重(并丟棄)、將爬取結(jié)果保存到數(shù)據(jù)庫中

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多