爬蟲面試基礎整理

  1. 常用網絡數(shù)據(jù)爬取方法
    urllib
    正則表達式
    Beautiful Soup
    Selenium
    Scrapy
    Lxml
  2. 常見的反爬手段與應對方法
  • 反爬手段:headers字段(User-Agent字段、過referer字段、cookie)
    解決方法:在爬蟲中添加Headers,瀏覽器的User-Agent復制到爬蟲的Headers中,將Referer值修改為目標網站域名。
  • 反爬手段:js(跳轉、生成了請求參數(shù)、數(shù)據(jù)的加密)
    解決方法:selenium+phantomJS框架,調用瀏覽器內核,并利用phantomJS執(zhí)行js來模擬人為操作以及觸發(fā)頁面中的js腳本。
  • 反爬手段:IP地址
    解決方法:IP代理,隨機間隔幾秒。
  • 反爬手段:驗證碼
    解決方法:cookie登錄、打碼平臺、selenium 模擬
  • 反爬手段:css(利用css掩蓋真實數(shù)據(jù))
    解決方法:找到被替換文本和順序、重排文本、對原文中span標簽根據(jù)class序號進行替換。
  1. 數(shù)據(jù)去重,清洗,存入數(shù)據(jù)庫
  • set()
  • 數(shù)據(jù)庫唯一約束
  • Scrapy內置的url去重方法
  • 正則表達式
  • 編寫代碼清洗數(shù)據(jù)
  • 數(shù)據(jù)庫存儲后清洗
  1. Scrapy的基本結構
    引擎(Scrapy)
    調度器(Scheduler)
    下載器(Downloader)
    爬蟲(Spiders)
    項目管道(Pipeline)
    下載器中間件(Downloader Middlewares)
    爬蟲中間件(Spider Middlewares)
    調度中間件(Scheduler Middewares)
  2. Scrapy運行流程
    1.引擎從調度器中取出一個URL用于抓取
    2.引擎把URL封裝成一個Request給下載器
    3.下載器把資源下載并封裝成Response
    4.爬蟲解析Response
    5.解析出Item交給管道進一步處理
    6.解析出URL把URL交給調度器等待抓取
  3. Scrapy幾種中間件
  • 下載器中間件(Downloader Middlewares):請求到網頁后,頁面被下載時進行處理
  • 爬蟲中間件(Spider Middlewares):在爬蟲運行中進行一些處理
  • 調度中間件(Scheduler Middewares)
  1. 代理怎么使用
    可以放在一個列表中,隨機選擇一個代理去訪問網站。
  2. 同步和異步
  • 線程方面:
    同步:多個線程同時訪問同一資源,等待訪問結束,浪費時間、效率低下。
    異步:在訪問資源的時,在空閑等待時可以同時訪問其他的資源。
  • 網絡方面:
    同步:提交請求→等待服務器處理→處理完畢返回 期間客戶端瀏覽器不能做任何事情。
    異步:事件觸發(fā)請求→服務器處理→處理完畢 期間瀏覽器可以做其他事情。
  1. 鏈表和順序存儲
  • 順序存儲:
    原理:數(shù)據(jù)存儲在一塊連續(xù)的內存空間。
    優(yōu)點:存儲效率高、速度快、通過下標直接存儲。
    缺點:插入刪除慢、不可以增長長度。
  • 鏈表存儲
    原理:動態(tài)分配空間,存儲器有空間就不會發(fā)生存儲溢出。
    優(yōu)點:插入刪除速度快、保留物理順序,更改只需改變指針指向。
    缺點:查找需要循環(huán)鏈表,速度慢。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容