-
Python面試真題 - 分布式爬蟲主要解決什么問題 ?
【Python面試真題】- 分布式爬蟲主要解決什么問題 ? 1)ip 2)帶寬 3)cpu 4)io
-
【Python面試真題】- scrapy和scrapy-redis有什么區別?為什么選擇redis數據庫?
【Python面試真題】- scrapy和scrapy-redis有什么區別?為什么選擇redis數據庫? 1) scrapy是一個Python爬蟲框架,爬取效率極高,具有高度定制性,但是不支持分布式。而scrapy-redis一套基于redis數據庫、運行在scrapy框架之上的組件,可以讓scrapy支持分布式策略,Slaver端共享Master端redis數據庫里的item隊列、請求隊列和請求指紋集合。 2) 為什么選擇redis數據庫,因為redis支持主從同步,而且數據都是緩存在內存中…
-
Python面試真題 - 常見的反爬蟲和應對方法?
【Python面試真題】- 常見的反爬蟲和應對方法? 1).通過Headers反爬蟲 從用戶請求的Headers反爬蟲是最常見的反爬蟲策略。很多網站都會對Headers的User-Agent進行檢測,還有一部分網站會對Referer進行檢測(一些資源網站的防盜鏈就是檢測Referer)。如果遇到了這類反爬蟲機制,可以直接在爬蟲中添加Headers,將瀏覽器的User-Agent復制到爬蟲的Headers中;或者將Referer值修改為目標網站域名。對于檢測Headers的反爬蟲,在爬蟲中修改或者…
-
【Python面試真題】- 描述下scrapy框架運行的機制?
【Python面試真題】- 描述下scrapy框架運行的機制? 從start_urls里獲取第一批url并發送請求,請求由引擎交給調度器入請求隊列,獲取完畢后,調度器將請求隊列里的請求交給下載器去獲取請求對應的響應資源,并將響應交給自己編寫的解析方法做提取處理:1. 如果提取出需要的數據,則交給管道文件處理;2. 如果提取出url,則繼續執行之前的步驟(發送url請求,并由引擎將請求交給調度器入隊列...),直到請求隊列里沒有請求,程序結束。
-
Python面試真題- Django重定向你是如何實現的?用的什么狀態碼?
【Python面試真題】- Django重定向你是如何實現的?用的什么狀態碼? 使用HttpResponseRedirect redirect和reverse 狀態碼:302,301
-
Python面試真題 - 迭代器和生成器的區別 ?
【Python面試真題】- 迭代器和生成器的區別 ? 1)迭代器是一個更抽象的概念,任何對象,如果它的類有next方法和iter方法返回自己本身。對于string、list、dict、tuple等這類容器對象,使用for循環遍歷是很方便的。在后臺for語句對容器對象調用iter()函數,iter()是Python的內置函數。iter()會返回一個定義了next()方法的迭代器對象,它在容器中逐個訪問容器內元素,next()也是Python的內置函數。在沒有后續元素時,next()會拋出一個S…
-
Python面試真題 - 寫爬蟲是用多進程好?還是多線程好? 為什么?
【Python面試真題】- 寫爬蟲是用多進程好?還是多線程好? 為什么? IO密集型代碼(文件處理、網絡爬蟲等),多線程能夠有效提升效率(單線程下有IO操作會進行IO等待,造成不必要的時間浪費,而開啟多線程能在線程A等待時,自動切換到線程B,可以不浪費CPU的資源,從而能提升程序執行效率)。在實際的數據采集過程中,既考慮網速和響應的問題,也需要考慮自身機器的硬件情況,來設置多進程或多線程
-
Python面試真題- scrapy和scrapy-redis有什么區別?為什么選擇redis數據庫?
【Python面試真題】- scrapy和scrapy-redis有什么區別?為什么選擇redis數據庫? 1)scrapy是一個Python爬蟲框架,爬取效率極高,具有高度定制性,但是不支持分布式。而scrapy-redis一套基于redis數據庫、運行在scrapy框架之上的組件,可以讓scrapy支持分布式策略,Slaver端共享Master端redis數據庫里的item隊列、請求隊列和請求指紋集合。 2)為什么選擇redis數據庫,因為redis支持主從同步,而且數據都是緩存在內…
-
Python面試真題 - Tornado 的核是什么 ?
【Python面試真題】- Tornado 的核是什么 ? Tornado 的核心是 ioloop 和 iostream 這兩個模塊,前者提供了一個高效的 I/O 事件循環,后者則封裝了 一個無阻塞的 socket 。通過向 ioloop 中添加網絡 I/O 事件,利用無阻塞的 socket ,再搭配相應的回調 函數,便可達到夢寐以求的高效異步執行。
-
Python面試真題 - Django重定向你是如何實現的?用的什么狀態碼?
【Python面試真題】- Django重定向你是如何實現的?用的什么狀態碼? 使用HttpResponseRedirect redirect和reverse 狀態碼:302,301