爬蟲面試手冊

爬蟲面試手冊

薪資13~20k
崗位職責:
  1. 負責公司數據平臺的數據采集、運維優化;
  2. 負責自動化腳本,爬蟲腳本;
  3. 研究數據采集策略和防屏蔽規則,提升數據采集系統的穩定性、可擴展性,提高抓取的效率和質量;
崗位要求
  1. 本科及以上學歷,計算機、信息科學及相關專業畢業;
  2. 熟悉java、python或go編程語言,熟悉分布式多線程編程,熟悉網絡協議及數據交換標準;
  3. 熟悉反爬原理,有成熟的繞過網站屏蔽解決方案;
  4. 熟悉scrapy、nutch等常用爬蟲框架及原理;
  5. 熟悉app抓取技術,熟悉常規反爬蟲策略和規避方法,能夠獨立承擔爬蟲運維工作;
  6. 熟悉beautifulsoup、selenium技術等;
  7. 使用過爬蟲工具八爪魚、火車頭等;
  8. 能解決封賬號、封IP、驗證碼識別、圖像識別、風控等問題、有解決封號經驗優先;
  9. 具有豐富的JS逆向經驗,熟悉反混淆、JS跟蹤、JS 逆向、WASM、JSVMP還原技能;
  10. 熟練使用AST還原JS、能繞過常見的JS反調試;
  11. 分析問題邏輯清晰,有高度的責任心,有良好的團隊協作意識和溝通能力,善于學習和鉆研技術;
  12. 加分項:爬取數據日均超100w次,深度參與至少一個大規模分布式爬蟲系統的架構設計。

  1. http 協議與 https 協議的區別?
    1. http 協議需要到 ca 申請證書,一般免費證書較少,因而需要一定費用;
    2. ?http 是超文本傳輸協議,信息是明文傳輸,https 則是具有安全性的 ssl加密傳輸協議;
    3. http 和 https 使用的是完全不同的連接方式,用的端口不一樣,前者是 80,后者是 443;
    4. http 的連接很簡單,是無狀態的,https 協議是有 ssl +http 協議構建的可進行加密傳輸、身份認證的網絡協議,比 http 協議安全;
  2. 什么是 robots 協議?闡述 robots 協議與 爬蟲的關系?
    1. Robots 協議是約定哪些內容允許哪些爬蟲抓取;
    2. 通用爬蟲無需遵守 robots 協議,而我們寫的聚焦爬蟲則需要遵守。
  3. 簡述聚焦爬蟲的設計思路
    1. 確定 url,模擬瀏覽器向服務器發送請求;
    2. 獲取響應數據并進行數據解析;
    3. 將目標數據持久化到本地;
  4. 簡述爬蟲的分類及各類爬蟲的概念
    1. 通用爬蟲:爬取網頁數據,為搜索引擎提供檢索服務;
    2. 聚焦爬蟲:針對某一領域爬取特定數據的爬蟲;又分為深度爬蟲和增量式爬蟲。
  5. 請寫出 8 中常用的請求方法

Get、?Post、Put、?Delete、Trace、?Head、Connect、Option

  1. 列舉反爬蟲機制
    1. UA 檢測;
    2. Robots 協議;
    3. 驗證碼;
    4. IP 封禁;
    5. 賬號封禁;
    6. 動態數據加載;
    7. ?Js 數據加密;
    8. 隱藏參數;
    9. 字體反爬
  2. Requests 模塊發送 get 請求的參數
    1. Url;
    2. Headers;
    3. Params;
    4. Proxies;
  3. Requests 發送請求時攜帶 headers 參數及作用
    1. User-Agent:實現 UA 偽裝;
    2. Cookie:模擬登陸;
    3. Connection:保持連接;
    4. Accept:接受數據類型。
  4. Requests 向服務器發送文件時,文件的打開模式是什么?

Wb

  1. Requests 模塊那個類自動封裝 cookie

session

  1. 針對 requests 請求的響應對象,如何獲取其文本形式,二進制形式及 json數據
    1. Res.text:獲取 html 源碼;
    2. Res.content:獲取二進制流,多用于圖片、視頻下載等;
    3. Res.json():獲取 json 數據,多用 ajax 請求。
  2. 請列舉數據持久化的方式

Csv、Json、Mysql、Mongodb、Redis

  1. Cookie 和 session 的區別?
    1. 數據存儲位置不同,cookie 存在客戶端,session 存在服務器;
    2. 安全程度不同,cookie 存客戶端本地,分析 cookie,實現 cookie 欺騙,考慮到安全性,所以用 session;
    3. 性能不同,session 存服務器,訪問量大時,會增加服務器負載,考慮到性能,所以用 cookie;
    4. 數據存儲大小不同,單個 cookie 不超過 4k,部分瀏覽器會限制 cookie的存儲個數,但 session 存在服務器,故不受客戶端瀏覽器限制。
  2. 請寫出 tcp/udp 協議,ip 協議,arp 協議,http/https 協議及 ftp 協議分別位于 tcp/ip 五層模型的哪一層。
    1. TCP/UDP 協議:傳輸層;
    2. IP:網絡層;
    3. ARP 協議:數據鏈路層;
    4. HTTP/HTTPS:應用層;
    5. FTP 協議:應用層。
  3. 出 tcp/ip 五層模型
    1. 應用層;
    2. 傳輸層;
    3. 網絡層;
    4. 數據鏈路層;
    5. 物理層。
  4. 談談 tcp 三次握手四次揮手中為什么要三次握手?
    1. TCP 連接的三次握手是為了建立可靠的連接;
    2. 第一次握手:客戶端向服務器發送 SYN 包,并進入 SYN_SENF 狀態,等待服務器確認;
    3. 第二次握手:服務器收到 SYN 包,確認并發送 SYN+ACK 包,同時進入 SYN_RECV 狀態;
    4. 第三次握手:客戶端收到服務器 SYN+ACK 包,向服務器確認 ACK 包,進入 ESTABLISHED 狀態
  5. 請寫出 ftpssh、mysql、MongoDB、redis 協議或軟件的默認端口
    1. ftp:21;
    2. Ssh:22;
    3. Mysql:3306;
    4. Mongodb:27017;
    5. Redis:6379。
  6. Mongodb 數據庫的優點。
    1. 模式自由,面向集合存儲,項目增刪字段不影響程序運行;
    2. 具有豐富的查詢表達式,支持動態查詢,以滿足項目的數據查詢需求;
    3. 良好的索引支持,文檔內嵌對象和數組,均可創建索引;
    4. 支持二進制數據存儲,可以將圖片視頻等文件轉換為二進制流存儲起來;
    5. 以內存映射為存儲引擎,大幅度提升性能。
  7. 多線程爬蟲共封裝了幾個類?每個類的作用是什么
    1. 兩個類:爬蟲類、解析類;
    2. 爬蟲類;定義爬取的行為,將響應數據提交給響應數據隊列;
    3. 解析類:定義數據解析規則并與數據庫交互,將數據持久化進數據庫。
  8. 簡述 scrapy 五大核心組件及作用。
    1. 引擎:負責各個組件之間的通訊信號及數據的傳遞;
    2. 爬蟲:定義了爬取行為和解析規則,提交 item 并傳給管道;
    3. 調度器:接受引擎傳遞的 request,并整理排列,然后進行請求的調度;
    4. 下載器:負責下載 request,提交響應給引擎,引擎傳遞給 spider;
    5. 管道: 負責處理 spider 傳遞來 的 item,如 去重、持久化存儲等。
  9. Scrapy 框架有哪些優點?
    1. 框架封裝的組件豐富,適用于開發大規模的抓取項目;
    2. 框架基于 Twisted 異步框架,異步處理請求,更快捷,更高效;
    3. 擁有強大的社區支持,擁有豐富的插件來擴展其功能;
  10. 如何判斷 scrapy 管道類是否需要 return item?

在 scrapy 框架中,可以自定義多個管道類,以滿足不同的數據持久化需求,當定義多管理類時,多個管道需傳遞 item 來進行存儲,管道類各有自己的權重,權重越小,我們認為越接近引擎,越先接受引擎傳遞來的 item 進行存儲, 故欲使權重大的管道能夠接受到 item,前一個管道必須 return item,如果一個管道類后無其他管道類,該管道則無需return item。

  1. 請問為什么下載器返回的相應數據不是直接通過擎傳遞給管道,而是傳遞給 spider?

由于在 scrapy 中,spider 不但定義了爬取的行為,還定義了數據解析規則,所以響應數據需傳遞給 spider 進行數據解析后,才能將目標數據傳遞給管道,進行持久化存儲。

  1. 簡述詳情頁爬取的思路
    1. 訪問列表頁;
    2. 從列表頁的響應數據中獲取詳情頁 url;
    3. 請求詳情頁 url,使用 scrapy.request 手動發送請求并指定回調;
    4. 解析數據在回調中獲取目標數據;
  2. 簡述多頁爬取的思路
    1. 思路一:將所有的頁面 url 生成后放在 start_urls 中,當項目啟動后會對 start_urls 中的 url 發起請求,實現多頁爬取;
    2. 思路二:在解析方法中構建 url,使用 scrapy 手動發送請求并指定回調,實現多頁爬取。
  3. 請談談動態數據加載的爬取思路

在 scrapy 項目中正常對動態加載的頁面發起請求,在下載中間件中攔截動態加載頁面的響應數據,在process_response方法中,調用selenium抓取相應的 url,獲取 html 源碼后再替換原有響應

  1. 請列舉種反爬機制及其對應的反爬策略
    1. Ua檢測:ua 偽裝;
    2. Robots 協 議 : requests 模 塊 無 須 理 會 , settings 配 置 中 將ROBOTSTXT_OBEY 改為 False;
    3. 動態數據加載:selenium 抓取;
    4. 圖片懶加載:根據響應數據獲取實際的 src 屬性值;
    5. Ip 封禁:使用代理 ip。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/14975.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/14975.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/14975.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java中的自動裝箱和拆箱

在Java中,自動裝箱(Autoboxing)和拆箱(Unboxing)是兩種重要的特性,它們允許在基本數據類型(如int、char、double等)和它們對應的包裝類(如Integer、Character、Double等&…

技術周總結 2024.05.13-05.19(計算機網絡 浮點數不準確原因和解決 java ThreadLocal XSS)

文章目錄 一、05.18周六1.1)網絡相關1.1.1) 問題01:交換機和路由器的區別是什么?交換機(Switch)路由器(Router)總結 1.1.2) 問題02:以太網介紹基本概念物理層…

lenovo聯想小新Pro 16 APH8 2023款(83AR)筆記本電腦原裝出廠Windows11系統鏡像安裝包下載

恢復出廠開箱狀態OEM預裝win11系統,自帶恢復重置初始化還原功能 下載鏈接:https://pan.baidu.com/s/1n_mPM4ZrLPrmXpCTukuyCQ?pwdmnwj 提取碼:mnwj 聯想原裝系統自帶所有驅動、出廠主題壁紙、系統屬性聯機支持標志、Office辦公軟件、聯想…

王安石,變革年代的文學巨匠

王安石,字介甫,號半山,生于北宋真宗天禧五年(公元1021年),卒于哲宗元佑元年(公元1086年),享年66歲。他是中國歷史上杰出的政治家、思想家、文學家和改革家,其…

2024年電工杯A題論文首發+摘要分享+問題一代碼分享

問題一論文代碼鏈接:https://pan.baidu.com/s/1kDV0DgSK3E4dv8Y6x7LExA 提取碼:sxjm --來自百度網盤超級會員V5的分享 園區微電網風光儲協調優化配置 摘要:園區微電網由風光發電和主電網聯合為負荷供電,為了盡量提高風光電量的…

python ofd轉pdf及圖片

本文部分內容參考,如有侵權請聯系刪除:使用 easyofd 解析ofd 文件_python模塊easyofd如何使用-CSDN博客 背景需求:需要將郵箱中得ofd格式發票提取出來轉換成pdf或者圖片。 在網上搜了發現使用pyofd包,安裝之后使用各種問題&…

.NET 一款兼容Exchange獲取密鑰的工具

01閱讀須知 此文所提供的信息只為網絡安全人員對自己所負責的網站、服務器等(包括但不限于)進行檢測或維護參考,未經授權請勿利用文章中的技術資料對任何計算機系統進行入侵操作。利用此文所提供的信息而造成的直接或間接后果和損失&#xf…

SCSS基本使用:構建高效、可維護的CSS架構

SCSS基本使用:構建高效、可維護的CSS架構 SCSS(Sassy CSS)是一個流行的CSS預處理器,它擴展了CSS的功能,提供了變量、嵌套規則、混合(Mixins)、函數等強大的編程特性,使得開發者能夠編…

甘肅教育雜志社-甘肅教育編輯部

《甘肅教育》來稿要求:    1、本刊對所有稿件有刪改權,如不同意刪改,請投稿時注明,切勿一稿多投,來稿一律文責自負。    2、稿件以word文檔格式,小四號宋體字,1.5倍行距。觀點鮮明,數據…

電商平臺的消費增值模式革新

在當今的電商市場,用戶留存和粘性是各大平臺競相追求的目標。而消費增值模式,以其獨特的激勵機制,正逐漸成為電商平臺吸引和留住用戶的新策略。 一、消費即投資:創新的返利機制 在傳統的電商消費中,消費者完成交易后&…

小阿軒yx-FTP文件傳輸服務

小阿軒yx-FTP文件傳輸服務 協議 用來上傳和下載實現遠程共享文件統一管理文件 原理 控制文件的雙向傳輸,是一個應用程序工作在TCP/IP協議簇的提高文件傳輸的共享性和可靠性使用C/S模式的工作方式連接同時處理服務器和客戶端的連接命令和數據傳輸將命令和數據分…

【NumPy】NumPy實戰入門:線性代數(dot、linalg)與隨機數(numpy.random)詳解

🧑 博主簡介:阿里巴巴嵌入式技術專家,深耕嵌入式人工智能領域,具備多年的嵌入式硬件產品研發管理經驗。 📒 博客介紹:分享嵌入式開發領域的相關知識、經驗、思考和感悟,歡迎關注。提供嵌入式方向…

Modular RPG Hero PBR

-掩碼著色著色器提供了無限的顏色變化。(適用于標準/HDRP/URP 11.0.0) -為劍與盾/雙劍/雙劍姿態提供了簡單的角色控制器。(不包括弓和魔杖控制器)(它是用舊的輸入系統建造的) -HDRP/URP(11.0.0)SRP 100%支持常規著色器和遮罩著色著色器(基于著色器圖形) -具有許多模塊…

rtk技術的使用, test ok

1. 什么是gnss 2 rtk定位

邏輯回歸模型的背景與應用

1.1邏輯回歸模型的背景與應用 邏輯回歸模型,作為一種經典的機器學習方法,起源于統計學領域。在眾多實際應用場景中,邏輯回歸模型都發揮著重要作用,尤其在分類問題中。當我們需要對具有離散特征的數據進行建模和預測時&#xff0c…

五分鐘部署開源運維平臺Spug結合內網穿透實現遠程登錄管理

文章目錄 前言1. Docker安裝Spug2 . 本地訪問測試3. Linux 安裝cpolar4. 配置Spug公網訪問地址5. 公網遠程訪問Spug管理界面6. 固定Spug公網地址 前言 Spug 面向中小型企業設計的輕量級無 Agent 的自動化運維平臺,整合了主機管理、主機批量執行、主機在線終端、文件…

移除元素-力扣

第一種解法&#xff0c;暴力解法&#xff0c;使用兩個for循環一個進行遍歷&#xff0c;一個進行覆蓋&#xff0c;代碼如下&#xff1a; class Solution { public:int removeElement(vector<int>& nums, int val) {int size nums.size();for(int i 0; i < size; …

C語言中的 ?: :三元運算符詳解

C語言中的 ?: &#xff1a;三元運算符詳解 在C語言的浩瀚代碼海洋中&#xff0c;三元運算符&#xff08;?:&#xff09;如同一位優雅的舞者&#xff0c;以簡潔的姿態完成條件判斷與賦值的雙重任務。它以問號&#xff08;?&#xff09;和冒號&#xff08;:&#xff09;這兩個…

Linux完整版命令大全(九)

4. linux壓縮備份命令 ar 功能說明&#xff1a;建立或修改備存文件&#xff0c;或是從備存文件中抽取文件。語  法&#xff1a;ar[-dmpqrtx][cfosSuvV][a<成員文件>][b<成員文件>][i<成員文件>][備存文件][成員文件]補充說明&#xff1a;ar可讓您集合許多…

Spring boot 注入成員變量HttpServletRequest的原理

前言 最近做項目&#xff0c;springboot項目&#xff0c;本來我們在controller的requestmapping取參數值或者返回寫時&#xff0c;使用方法參數&#xff0c;但是發現老項目直接注入了成員變量&#xff0c;Spring本身是單例的&#xff0c;如果是成員變量注入&#xff0c;那么也…