最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python爬蟲工程師面試問題總結(jié)

 更新時間:2018年03月22日 08:39:27   投稿:laozhang  
本篇文章給大家總結(jié)了關(guān)于Python爬蟲工程師面試問題總結(jié),希望我們整理的內(nèi)容能夠幫助到大家。

注:答案一般在網(wǎng)上都能夠找到。

1.對if __name__ == 'main'的理解陳述

2.python是如何進行內(nèi)存管理的?

3.請寫出一段Python代碼實現(xiàn)刪除一個list里面的重復(fù)元素

4.Python里面如何拷貝一個對象?(賦值,淺拷貝,深拷貝的區(qū)別)

5.介紹一下except的用法和作用?

6.Python中__new__與__init__方法的區(qū)別

7.常用的網(wǎng)絡(luò)數(shù)據(jù)爬取方法

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

9.urllib 和 urllib2 的區(qū)別

10.設(shè)計一個基于session登錄驗證的爬蟲方案

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

12.熟悉的爬蟲框架

13.Python在服務(wù)器的部署流程,以及環(huán)境隔離

14.Django 和 Flask 的相同點與不同點,如何進行選擇?

15.寫一個Python中的單例模式

16.Linux部署服務(wù)腳本命令(包括啟動和停止的shell腳本)

17.你用過多線程和異步嘛?除此之外你還用過什么方法來提高爬蟲效率?

18.POST 與 GET的區(qū)別

1)對if __name__ == 'main'的理解陳述

__name__是當(dāng)前模塊名,當(dāng)模塊被直接運行時模塊名為__main__,也就是當(dāng)前的模塊,當(dāng)模塊被導(dǎo)入時,模塊名就不是__main__,即代碼將不會執(zhí)行。

2)python是如何進行內(nèi)存管理的?

a、對象的引用計數(shù)機制
python內(nèi)部使用引用計數(shù),來保持追蹤內(nèi)存中的對象,Python內(nèi)部記錄了對象有多少個引用,即引用計數(shù),當(dāng)對象被創(chuàng)建時就創(chuàng)建了一個引用計數(shù),當(dāng)對象不再需要時,這個對象的引用計數(shù)為0時,它被垃圾回收。

b、垃圾回收

1>當(dāng)一個對象的引用計數(shù)歸零時,它將被垃圾收集機制處理掉。

2>當(dāng)兩個對象a和b相互引用時,del語句可以減少a和b的引用計數(shù),并銷毀用于引用底層對象 的名稱。然而由于每個對象都包含一個對其他對象的應(yīng)用,因此引用計數(shù)不會歸零,對象也不會銷毀。(從而導(dǎo)致內(nèi)存泄露)。為解決這一問題,解釋器會定期執(zhí)行一個循環(huán)檢測器,搜索不可訪問對象的循環(huán)并刪除它們。

c、內(nèi)存池機制

Python提供了對內(nèi)存的垃圾收集機制,但是它將不用的內(nèi)存放到內(nèi)存池而不是返回給操作系統(tǒng)。

1>Pymalloc機制。為了加速Python的執(zhí)行效率,Python引入了一個內(nèi)存池機制,用于管理 對小塊內(nèi)存的申請和釋放。

2>Python中所有小于256個字節(jié)的對象都使用pymalloc實現(xiàn)的分配器,而大的對象則使用 系統(tǒng)的malloc。

3>對于Python對象,如整數(shù),浮點數(shù)和List,都有其獨立的私有內(nèi)存池,對象間不共享他們的內(nèi)存池。也就是說如果你分配又釋放了大量的整數(shù),用于緩存這些整數(shù)的內(nèi)存就不能再分配給浮點數(shù)。

3)請寫出一段Python代碼實現(xiàn)刪除一個list里面的重復(fù)元素

# 1.使用set函數(shù)
list = [1, 3, 4, 5, 51, 2, 3]
set(list)
# 2.使用字典函數(shù),
>>> a = [1, 2, 4, 2, 4, 5, 6, 5, 7, 8, 9, 0]
>>> b = {}
>>> b = b.fromkeys(a)
>>> c = list(b.keys())
>>> c

4)Python里面如何拷貝一個對象?(賦值,淺拷貝,深拷貝的區(qū)別)

賦值(=),就是創(chuàng)建了對象的一個新的引用,修改其中任意一個變量都會影響到另一個。

淺拷貝:創(chuàng)建一個新的對象,但它包含的是對原始對象中包含項的引用(如果用引用的方式修改其中一個對象,另外一個也會修改改變){1,完全切片方法;2,工廠函數(shù),如list();3,copy模塊的copy()函數(shù)}

深拷貝:創(chuàng)建一個新的對象,并且遞歸的復(fù)制它所包含的對象(修改其中一個,另外一個不會改變){copy模塊的deep.deepcopy()函數(shù)}

5)介紹一下except的用法和作用?

try…except…except…else…

執(zhí)行try下的語句,如果引發(fā)異常,則執(zhí)行過程會跳到except語句。對每個except分支順序嘗試執(zhí)行,如果引發(fā)的異常與except中的異常組匹配,執(zhí)行相應(yīng)的語句。如果所有的except都不匹配,則異常會傳遞到下一個調(diào)用本代碼的最高層try代碼中。

try下的語句正常執(zhí)行,則執(zhí)行else塊代碼。如果發(fā)生異常,就不會執(zhí)行如果存在finally語句,最后總是會執(zhí)行。

6)Python中__new__與__init__方法的區(qū)別

__new__:它是創(chuàng)建對象時調(diào)用,會返回當(dāng)前對象的一個實例,可以用__new__來實現(xiàn)單例

__init__:它是創(chuàng)建對象后調(diào)用,對當(dāng)前對象的一些實例初始化,無返回值

7)常用的網(wǎng)絡(luò)數(shù)據(jù)爬取方法

  • 正則表達式
  • Beautiful Soup
  • Lxml

8)遇到過得反爬蟲策略以及解決方法

1.通過headers反爬蟲

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

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

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

解決方法:

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

使用多個代理ip進行抓取或者設(shè)置抓取的頻率降低一些,動態(tài)網(wǎng)頁的可以使用selenium + phantomjs 進行抓取

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

9)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一起使用的原因。

10)設(shè)計一個基于session登錄驗證的爬蟲方案

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

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

解析包 re、xpath、beautiful soup、lxml

12)熟悉的爬蟲框架

Scrapy框架 根據(jù)自己的實際情況回答

13)Python在服務(wù)器的部署流程,以及環(huán)境隔離

14)Django 和 Flask 的相同點與不同點,如何進行選擇?

15)寫一個Python中的單例模式

class Singleton(object):
_instance = None
def __new__(cls, *args, **kw):
if not cls._instance:
cls._instance = super(Singleton, cls).__new__(cls, *args, **kw) 
return cls._instance
class MyClass(Singleton): 
a = 1
one = MyClass()
two = MyClass()
id(one) = id(two)
>>> True

16)Linux部署服務(wù)腳本命令(包括啟動和停止的shell腳本)

17)你用過多線程和異步嘛?除此之外你還用過什么方法來提高爬蟲效率?

  • scrapy-redis 分布式爬取
  • 對于定向爬取可以用正則取代xpath

18)POST與 GET的區(qū)別

  • GET數(shù)據(jù)傳輸安全性低,POST傳輸數(shù)據(jù)安全性高,因為參數(shù)不會被保存在瀏覽器歷史或web服務(wù)器日志中;
  • 在做數(shù)據(jù)查詢時,建議用GET方式;而在做數(shù)據(jù)添加、修改或刪除時,建議用POST方式;
  • GET在url中傳遞數(shù)據(jù),數(shù)據(jù)信息放在請求頭中;而POST請求信息放在請求體中進行傳遞數(shù)據(jù);
  • GET傳輸數(shù)據(jù)的數(shù)據(jù)量較小,只能在請求頭中發(fā)送數(shù)據(jù),而POST傳輸數(shù)據(jù)信息比較大,一般不受限制;
  • 在執(zhí)行效率來說,GET比POST好

19)什么是lambda函數(shù)?它有什么好處?

lambda 表達式,通常是在需要一個函數(shù),但是又不想費神去命名一個函數(shù)的場合下使用,也就是指匿名函數(shù)

lambda函數(shù):首要用途是指點短小的回調(diào)函數(shù)

lambda [arguments]:expression
>>> a=lambdax,y:x+y
>>> a(3,11)

相關(guān)文章

  • 基于python歷史天氣采集的分析

    基于python歷史天氣采集的分析

    今天小編就為大家分享一篇基于python歷史天氣采集的分析,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • 膠水語言Python與C/C++的相互調(diào)用的實現(xiàn)

    膠水語言Python與C/C++的相互調(diào)用的實現(xiàn)

    這篇文章主要介紹了膠水語言Python與C/C++的相互調(diào)用的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • Python操作Word批量生成合同的實現(xiàn)示例

    Python操作Word批量生成合同的實現(xiàn)示例

    這篇文章主要介紹了Python操作Word批量生成合同的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • Python報錯ImportError:?IProgress?not?found.?Please?update?jupyter?and?ipywidgets解決

    Python報錯ImportError:?IProgress?not?found.?Please?update

    在使用Jupyter Notebook或JupyterLab進行交互式編程時,我們可能會遇到各種導(dǎo)入錯誤,本文就來介紹一下Python報錯ImportError:?IProgress?not?found.?Please?update?jupyter?and?ipywidgets解決,感興趣的可以了解一下
    2024-06-06
  • 對Python3中dict.keys()轉(zhuǎn)換成list類型的方法詳解

    對Python3中dict.keys()轉(zhuǎn)換成list類型的方法詳解

    今天小編就為大家分享一篇對Python3中dict.keys()轉(zhuǎn)換成list類型的方法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • python離線安裝外部依賴包的實現(xiàn)

    python離線安裝外部依賴包的實現(xiàn)

    今天小編就為大家分享一篇python離線安裝外部依賴包的實現(xiàn),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • 教你用Type Hint提高Python程序開發(fā)效率

    教你用Type Hint提高Python程序開發(fā)效率

    本文通過介紹和實例教大家如何利用Type Hint來提升Python程序開發(fā)效率,對大家使用python開發(fā)很有幫助,有需要的參考學(xué)習(xí)。
    2016-08-08
  • TensorFlow 模型載入方法匯總(小結(jié))

    TensorFlow 模型載入方法匯總(小結(jié))

    這篇文章主要介紹了TensorFlow 模型載入方法匯總(小結(jié)),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • Python連接Redis庫常見操作全面詳解

    Python連接Redis庫常見操作全面詳解

    本文將介紹如何在Python中進行Redis操作,包括連接Redis、數(shù)據(jù)存儲、數(shù)據(jù)檢索和其他常見操作,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11
  • python3.7實現(xiàn)云之訊、聚合短信平臺的短信發(fā)送功能

    python3.7實現(xiàn)云之訊、聚合短信平臺的短信發(fā)送功能

    這篇文章主要介紹了python3.7實現(xiàn)云之訊、聚合短信平臺的短信發(fā)送功能,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-09-09

最新評論

临江市| 澄迈县| 甘孜| 平遥县| 瓮安县| 桐梓县| 辽宁省| 施甸县| 石台县| 屯昌县| 新闻| 宜都市| 玉屏| 应用必备| 兴宁市| 额敏县| 甘孜| 洱源县| 化州市| 射洪县| 石渠县| 来宾市| 志丹县| 山丹县| 罗山县| 布拖县| 内乡县| 临沂市| 古交市| 晋宁县| 咸丰县| 灯塔市| 泾源县| 鹿邑县| 英吉沙县| 井研县| 左权县| 蕲春县| 香格里拉县| 长葛市| 明星|