本文的文字及圖片來源於網絡,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯系我們以作處理
本文章來自騰訊雲 作者:python學習教程
想要學習Python?有問題得不到第一時間解決?來看看這里“1039649593”滿足你的需求,資料都已經上傳至文件中,可以自行下載!還有海量最新2020python學習資料。
點擊查看
前言
Python現在非常火,語法簡單而且功能強大,很多同學都想學Python!所以小的給各位看官們准備了高價值Python學習視頻教程及相關電子版書籍,歡迎前來領取!
什么是網絡爬蟲 網絡爬蟲又稱網絡蜘蛛,是指按照某種規則在網絡上爬取所需內容的腳本程序。下面是小編為您整理的關於python網絡爬蟲合法嗎,希望對你有所幫助。
python網絡爬蟲合法嗎
隨着大數據和人工智能的火爆,網絡爬蟲也被大家熟知起來;隨之也出現一個問題,網絡爬蟲違法嗎?符合道德嗎?本文將詳細介紹網絡爬蟲是否違法,希望幫助你解決爬蟲是否違法帶來的困擾。
網絡爬蟲大多數情況都不違法
網絡爬蟲在大多數情況中都不違法,其實我們生活中幾乎每天都在爬蟲應用,如百度,你在百度中搜索到的內容幾乎都是爬蟲采集下來的(百度自營的產品除外,如百度知道、百科等),所以網絡爬蟲作為一門技術,技術本身是不違法的,且在大多數情況下你都可以放心大 膽的使用爬蟲技術。
python爬蟲技術的選擇
爬蟲又是另外一個領域,涉及的知識點比較多,不僅要熟悉web開發,有時候還涉及機器學習等知識,不過在python里一切變的簡單,有許多第三方庫來幫助我們實現。使用python編寫爬蟲首先要選擇合適的抓取模塊,最簡單的功能就是能發送和處理請求, 下面就介紹幾個常用的抓取的方式。
一、python 自帶的urlib2和urlib或者第三方模塊requests
這種方案適合簡單的頁面爬蟲,比如爬取博客園推薦文章。
urllib2和urllib是python自帶模塊可用來發送處理請求,雖然比較靈活但API易用性較差,所以一般都要進行二次封裝,我曾經也進行過封裝,最后發現自己封裝出來的模塊無限趨近於非常成熟的requests庫,所以還是直接使用requests吧,當然requests只發送和接受請求,對於頁面分析還要配合lxml或beautifulsoup等第三方庫進行。高級點的爬蟲不僅僅是發送和處理請求,還需要處理異常,請求速度控制等問題,這就需要我們寫額外的代碼去控制,當然我們可以自己寫只是時間問題,但完全沒有必要,接下來我會介紹第二種方案。
二、scrapy框架
scrapy是爬蟲領取的佼佼者,目前我做的項目無論復雜與否,都采用scrapy進行,對於請求調度,異常處理都已經封裝好了,而且有第三方的scrapy-redis還可以支持分布式,我們把關注點放在更重要的頁面分析和規則編寫上,代碼可以參考我github上的例子。
三、python selenium
這種方式我稱為終極必殺器,一般是實在沒辦法的時候才用,以前我在利用某家搜索引擎抓取文章時,該搜索引擎采用的比較高難度的反爬蟲機制而且不斷變化讓人找不到規律,最典型的特點就是cookie會隨機隱藏到某個頁面js和圖片中,解決方案就是模擬瀏覽器的行為加載所有js等靜態資源文件,如果自己寫個瀏覽器取解析太扯蛋了,如果chrome瀏覽器能開放接口,通過chrome的加載方式獲取頁面的內容就好了,這就是selenium了,selenium加上隨機等待時間可以模擬出和人非常類似的操作行為,缺點就是速度較慢,但是一般爬蟲對抓取速度要求不高,重要的是穩定性,這種方式對於抓取反爬蟲機制做的好的大型網站比較適用。
總結,對於大部分爬蟲需求直接用scrapy解決,如果解決不了再采用第一種或第三種方案,就這么簡單。
python爬蟲上可以干什么
(1) 不同領域、不同背景的用戶往往具有不同的檢索目的和需求,通用搜索引擎所返回的結果包含大量用戶不關心的網頁。
(2)通用搜索引擎的目標是盡可能大的網絡覆蓋率,有限的搜索引擎服務器資源與無限的網絡數據資源之間的矛盾將進一步加深。
(3)萬維網數據形式的豐富和網絡技術的不斷發展,圖片、數據庫、音頻、視頻多媒體等不同數據大量出現,通用搜索引擎往往對這些信息含量密集且具有一定結構的數據無能為力,不能很好地發現和獲取。
(4)通用搜索引擎大多提供基於關鍵字的檢索,難以支持根據語義信息提出的查詢。
為了解決上述問題,定向抓取相關網頁資源的聚焦爬蟲應運而生。聚焦爬蟲是一個自動下載網頁的程序,它根據既定的抓取目標,有選擇的訪問萬維網上的網頁與相關的鏈接,獲取所需要的信息。與通用爬蟲(general?purpose web crawler)不同,聚焦爬蟲並不追求大的覆蓋,而將目標定為抓取與某一特定主題內容相關的網頁,為面向主題的用戶查詢准備數據資源。
反爬蟲
-
基本的反爬蟲手段,主要是檢測請求頭中的字段,比如:User-Agent、referer等。針對這種情況,只要在請求中帶上對應的字段即可。所構造http請求的各個字段最好跟在瀏覽器中發送的完全一樣,但也不是必須。
-
基於用戶行為的反爬蟲手段,主要是在后台對訪問的IP(或User-Agent)進行統計,當超過某一設定的閾值,給予封鎖。針對這種情況,可通過使用代理服務器解決,每隔幾次請求,切換一下所用代理的IP地址(或通過使用User-Agent列表解決,每次從列表里隨機選擇一個使用)。這樣的反爬蟲方法可能會誤傷用戶。
-
希望抓取的數據是如果通過ajax請求得到的,假如通過網絡分析能夠找到該ajax請求,也能分析出請求所需的具體參數,則直接模擬相應的http請求,即可從響應中得到對應的數據。這種情況,跟普通的請求沒有什么區別。
-
基於JavaScript的反爬蟲手段,主要是在響應數據頁面之前,先返回一段帶有JavaScript代碼的頁面,用於驗證訪問者有無JavaScript的執行環境,以確定使用的是不是瀏覽器。
通常情況下,這段JS代碼執行后,會發送一個帶參數key的請求,后台通過判斷key的值來決定是響應真實的頁面,還是響應偽造或錯誤的頁面。因為key參數是動態生成的,每次都不一樣,難以分析出其生成方法,使得無法構造對應的http請求。
以上就是小編為您整理python網絡爬蟲合法嗎的全部內容。