亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

2019最新Python爬蟲高頻率面試題總結(一)

系統 1568 0

今天給大家出一個關于Python爬蟲面試題的總結,相對于來說出現頻率比較高的一些!

1. 為什么 requests 請求需要帶上 header?

原因是:模擬瀏覽器,欺騙服務器,獲取和瀏覽器一致的內容

header 的形式:字典

            
              headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"}

            
          

用法: requests.get(url,headers=headers)

2019最新Python爬蟲高頻率面試題總結(一)_第1張圖片
2. 談一談你對 Selenium 和 PhantomJS 了解

Selenium 是一個Web 的自動化測試工具,可以根據我們的指令,讓瀏覽器自動加載頁面,獲取需要的數據,甚至頁面截屏,或者判斷網站上某些動作是否發生。Selenium 自己不帶瀏覽器,不支持瀏覽器的功能,它需要與第三方瀏覽器結合在一起才能使用。但是我們有時候需要讓它內嵌在代碼中運行,所以我們可以用一個叫 PhantomJS 的工具代替真實的瀏覽器。Selenium庫里有個叫 WebDriver 的API。WebDriver 有點兒像可以加載網站的瀏覽器,但是它也可以像BeautifulSoup 或者其他Selector 對象一樣用來查找頁面元素,與頁面上的元素進行交互 (發送文本、點擊等),以及執行其他動作來運行網絡爬蟲。

PhantomJS是一個基于 Webkit 的“無界面”(headless)瀏覽器,它會把網站加載到內存并執行頁面上的 JavaScript,因為不會展示圖形界面,所以運行起來比完整的瀏覽器要高效。相比傳統的Chrome或 Firefox 瀏覽器等,資源消耗會更少。

如果我們把 Selenium 和 PhantomJS 結合在一起,就可以運行一個非常強大的網絡爬蟲了,這個爬蟲可以處理 JavaScrip、Cookie、headers,以及任何我們真實用戶需要做的事情。主程序退出后,selenium 不保證 phantomJS 也成功退出,最好手動關閉 phantomJS 進程。(有可能會導致多個 phantomJS 進程運行,占用內存)。WebDriverWait 雖然可能會減少延時,但是目前存在 bug(各種報錯),這種情況可以采用 sleep。phantomJS爬數據比較慢,可以選擇多線程。如果運行的時候發現有的可以運行,有的不能,可以嘗試將 phantomJS 改成 Chrome。

3. 寫一個郵箱地址的正則表達式?

[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(.[a-zA-Z0-9_-]+)+$

4. 你遇到的反爬蟲策略有哪些?及應對策略有什么?

通過headers反爬蟲
基于用戶行為的發爬蟲:例如同一IP短時間內多次訪問同一頁面,或者同一賬戶短時間內多次進行相同操作
動態網頁反爬蟲,例如:我們需要爬取的數據是通過ajax請求得到,或者通過JavaScript生成的
對部分數據進行加密處理的,例如:我們要抓的數據部分能夠抓到,另外的部分加密處理了,是亂碼
應對策略:
對于基本網頁的抓取可以自定義headers,添加headers的數據,代理來解決
有些網站的數據抓取必須進行模擬登陸才能抓取到完整的數據,所以要進行模擬登陸。
對于限制抓取頻率的,可以設置抓取的頻率降低一些,
對于限制ip抓取的可以使用多個代理ip進行抓取,輪詢使用代理
針對動態網頁的可以使用selenium+phantomjs進行抓取,但是比較慢,所以也可以使用查找接口的方式進行抓取。
對部分數據進行加密的,可以使用selenium進行截圖,飯后使用python自帶的 pytesseract庫進行識別,但是比較慢最直接的方法是找到加密的方法進行逆向推理。

5. 分布式爬蟲原理?

scrapy-redis實現分布式,其實從原理上來說很簡單,這里為描述方便,我們把自己的核心服務器稱為 master,而把用于跑爬蟲程序的機器稱為 slave。

我們知道,采用 scrapy 框架抓取網頁,我們需要首先給定它一些 start_urls,爬蟲首先訪問 start_urls里面的 url,再根據我們的具體邏輯,對里面的元素、或者是其他的二級、三級頁面進行抓取。而要實現分布式,我們只需要在這個 starts_urls 里面做文章就行了。

我們在 master 上搭建一個 redis 數據庫(注意這個數據庫只用作 url 的存儲,不關心爬取的具體數據,不要和后面的 mongodb 或者 mysql 混淆),并對每一個需要爬取的網站類型,都開辟一個單獨的列表字段。通過設置 slave 上 scrapy-redis 獲取 url 的地址為 master 地址。這樣的結果就是,盡管有多個 slave,然而大家獲取 url 的地方只有一個,那就是服務器 master 上的 redis 數據庫。并且,由于 scrapy-redis 自身的隊列機制,slave 獲取的鏈接不會相互沖突。這樣各個 slave 在完成抓取任務之后,再把獲取的結果匯總到服務器上(這時的數據存儲不再在是 redis,而是 mongodb 或者mysql等存放具體內容的數據庫了)這種方法的還有好處就是程序移植性強,只要處理好路徑問題,把 slave 上的程序移植到另一臺機器上運行,基本上就是復制粘貼的事情。

6. pythoon2.x 中urllib和urllib2的區別?

異同:都是做url請求的操作的,但是區別很明顯。
urllib2可以接受一個Request類的實例來設置URL請求的headers,urllib僅可以接受URL。這意味著,你不可以通過urllib模塊偽裝你的User Agent字符串等(偽裝瀏覽器)。
urllib提供urlencode方法用來GET查詢字符串的產生,而urllib2沒有。這是為何urllib常和urllib2一起使用的原因。
模塊比較優勢的地方是urlliburllib2.urlopen可以接受Request對象作為參數,從而可以控制HTTP Request的header部。
但是urllib.urlretrieve函數以及urllib.quote等一系列quote和unquote功能沒有被加入urllib2中,因此有時也需要urllib的輔助。
7.robots協議是什么?

Robots協議(也稱為爬蟲協議、爬蟲規則、機器人協議等)也就是robots.txt,網站通過robots協議告訴搜索引擎哪些頁面可以抓取,哪些頁面不能抓取。

Robots協議是網站國際互聯網界通行的道德規范,其目的是保護網站數據和敏感信息、確保用戶個人信息和隱私不被侵犯。因其不是命令,故需要搜索引擎自覺遵守。

8.什么是爬蟲?

爬蟲是請求網站并提取數據的自動化程序

9.爬蟲的基本流程?

1、通過http庫向目標站點發起請求,即發送一個Request,請求可以包含額外的headers等信息,等待服務器響應
2、如果服務器能正常響應,會得到一個Response,Response的內容比啊是索要獲取的頁面內容
3、解析內容:正則表達式、頁面解析庫、json
4、保存數據:文本或者存入數據庫
10.什么是Request和Response?

本地 向 服務器 發送Request,服務器根據請求返回一個Response,頁面就顯示在頁面上了

1、瀏覽器就發送消息給該網址所在的服務器,這個過程叫做Http Request

2、服務器收到瀏覽器發送的消息后,能夠根據瀏覽器發送消息的內容,做相應處

理,然后把消息回傳給瀏覽器,這個過程叫做HTTP Response

3、瀏覽器收到服務器的Response消息后,會對信息進行相應處理,然后顯示

下期會繼續為大家更新更多關于Python爬蟲的面試題總結!


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 一区二区日韩 | 亚洲成人观看 | 女人隐私秘视频黄www免费 | 日日噜噜夜夜狠狠久久aⅴ 日日噜噜夜夜狠狠久久丁香 | 午夜影院操| 国产成人小视频 | 日本一区二区中文字幕 | 天天干天天草天天 | 看免费一级片 | 国产第一亚洲 | 69成人网| 一级毛片免费在线观看网站 | 伊人色综合一区二区三区 | 久久精品区 | 免费福利在线视频 | 欧美精品久久久久久久免费观看 | 在线看的毛片 | 日本欧洲95视频 | 四虎永久在线观看免费网站网址 | 四虎精品免费永久在线 | 精品日本久久久久久久久久 | 欧美精品18xxxhd4k | 精品国产一区二区三区久久 | 狠狠色噜噜狠狠狠狠 | 亚洲视频国产视频 | 久久免费看片 | 色吧五月婷婷 | 四虎影视永久费观看在线 | 九九在线观看高清免费 | 四虎国产永久免费久久 | 色播影音 | 深夜视频在线免费观看 | 中文国产成人精品久久久 | 午夜免费体验区 | 在线看片黄色 | 中文字幕日韩欧美 | 99精品欧美一区 | 欧美日日干 | 色香欲综合成人免费视频 | 爱色aⅴ| 久久久久久国产精品视频 |