什么是網(wǎng)絡(luò)爬蟲 網(wǎng)絡(luò)爬蟲又稱網(wǎng)絡(luò)蜘蛛,是指按照某種規(guī)則在網(wǎng)絡(luò)上爬取所需內(nèi)容的腳本程序。下面就給大家整理的關(guān)于python網(wǎng)絡(luò)爬蟲合法嗎,希望對你有所幫助。
python網(wǎng)絡(luò)爬蟲合法嗎
隨著大數(shù)據(jù)和人工智能的火爆,網(wǎng)絡(luò)爬蟲也被大家熟知起來;隨之也出現(xiàn)一個(gè)問題,網(wǎng)絡(luò)爬蟲違法嗎?符合道德嗎?本文將詳細(xì)介紹網(wǎng)絡(luò)爬蟲是否違法,希望幫助你解決爬蟲是否違法帶來的困擾。
網(wǎng)絡(luò)爬蟲大多數(shù)情況都不違法
網(wǎng)絡(luò)爬蟲在大多數(shù)情況中都不違法,其實(shí)我們生活中幾乎每天都在爬蟲應(yīng)用,如百度,你在百度中搜索到的內(nèi)容幾乎都是爬蟲采集下來的(百度自營的產(chǎn)品除外,如百度知道、百科等),所以網(wǎng)絡(luò)爬蟲作為一門技術(shù),技術(shù)本身是不違法的,且在大多數(shù)情況下你都可以放心大 膽的使用爬蟲技術(shù)。
python爬蟲技術(shù)的選擇
爬蟲又是另外一個(gè)領(lǐng)域,涉及的知識點(diǎn)比較多,不僅要熟悉web開發(fā),有時(shí)候還涉及機(jī)器學(xué)習(xí)等知識,不過在python里一切變的簡單,有許多第三方庫來幫助我們實(shí)現(xiàn)。使用python編寫爬蟲首先要選擇合適的抓取模塊,最簡單的功能就是能發(fā)送和處理請求, 下面就介紹幾個(gè)常用的抓取的方式。
一、python 自帶的urlib2和urlib或者第三方模塊requests
這種方案適合簡單的頁面爬蟲,比如爬取博客園推薦文章。
urllib2和urllib是python自帶模塊可用來發(fā)送處理請求,雖然比較靈活但API易用性較差,所以一般都要進(jìn)行二次封裝,我曾經(jīng)也進(jìn)行過封裝,最后發(fā)現(xiàn)自己封裝出來的模塊無限趨近于非常成熟的requests庫,所以還是直接使用requests吧,當(dāng)然requests只發(fā)送和接受請求,對于頁面分析還要配合lxml或beautifulsoup等第三方庫進(jìn)行。高級點(diǎn)的爬蟲不僅僅是發(fā)送和處理請求,還需要處理異常,請求速度控制等問題,這就需要我們寫額外的代碼去控制,當(dāng)然我們可以自己寫只是時(shí)間問題,但完全沒有必要,接下來我會介紹第二種方案。
二、scrapy框架
scrapy是爬蟲領(lǐng)取的佼佼者,目前我做的項(xiàng)目無論復(fù)雜與否,都采用scrapy進(jìn)行,對于請求調(diào)度,異常處理都已經(jīng)封裝好了,而且有第三方的scrapy-redis還可以支持分布式,我們把關(guān)注點(diǎn)放在更重要的頁面分析和規(guī)則編寫上,代碼可以參考我github上的例子。
三、python selenium
這種方式我稱為終極必殺器,一般是實(shí)在沒辦法的時(shí)候才用,以前我在利用某家搜索引擎抓取文章時(shí),該搜索引擎采用的比較高難度的反爬蟲機(jī)制而且不斷變化讓人找不到規(guī)律,最典型的特點(diǎn)就是cookie會隨機(jī)隱藏到某個(gè)頁面js和圖片中,解決方案就是模擬瀏覽器的行為加載所有js等靜態(tài)資源文件,如果自己寫個(gè)瀏覽器取解析太扯蛋了,如果chrome瀏覽器能開放接口,通過chrome的加載方式獲取頁面的內(nèi)容就好了,這就是selenium了,selenium加上隨機(jī)等待時(shí)間可以模擬出和人非常類似的操作行為,缺點(diǎn)就是速度較慢,但是一般爬蟲對抓取速度要求不高,重要的是穩(wěn)定性,這種方式對于抓取反爬蟲機(jī)制做的好的大型網(wǎng)站比較適用。
總結(jié),對于大部分爬蟲需求直接用scrapy解決,如果解決不了再采用第一種或第三種方案,就這么簡單。
python爬蟲上可以干什么
(1) 不同領(lǐng)域、不同背景的用戶往往具有不同的檢索目的和需求,通用搜索引擎所返回的結(jié)果包含大量用戶不關(guān)心的網(wǎng)頁。
(2)通用搜索引擎的目標(biāo)是盡可能大的網(wǎng)絡(luò)覆蓋率,有限的搜索引擎服務(wù)器資源與無限的網(wǎng)絡(luò)數(shù)據(jù)資源之間的矛盾將進(jìn)一步加深。
(3)萬維網(wǎng)數(shù)據(jù)形式的豐富和網(wǎng)絡(luò)技術(shù)的不斷發(fā)展,圖片、數(shù)據(jù)庫、音頻、視頻多媒體等不同數(shù)據(jù)大量出現(xiàn),通用搜索引擎往往對這些信息含量密集且具有一定結(jié)構(gòu)的數(shù)據(jù)無能為力,不能很好地發(fā)現(xiàn)和獲取。
(4)通用搜索引擎大多提供基于關(guān)鍵字的檢索,難以支持根據(jù)語義信息提出的查詢。
為了解決上述問題,定向抓取相關(guān)網(wǎng)頁資源的聚焦爬蟲應(yīng)運(yùn)而生。聚焦爬蟲是一個(gè)自動(dòng)下載網(wǎng)頁的程序,它根據(jù)既定的抓取目標(biāo),有選擇的訪問萬維網(wǎng)上的網(wǎng)頁與相關(guān)的鏈接,獲取所需要的信息。與通用爬蟲(general?purpose web crawler)不同,聚焦爬蟲并不追求大的覆蓋,而將目標(biāo)定為抓取與某一特定主題內(nèi)容相關(guān)的網(wǎng)頁,為面向主題的用戶查詢準(zhǔn)備數(shù)據(jù)資源。
反爬蟲
1. 基本的反爬蟲手段,主要是檢測請求頭中的字段,比如:User-Agent、referer等。針對這種情況,只要在請求中帶上對應(yīng)的字段即可。所構(gòu)造http請求的各個(gè)字段最好跟在瀏覽器中發(fā)送的完全一樣,但也不是必須。
2. 基于用戶行為的反爬蟲手段,主要是在后臺對訪問的IP(或User-Agent)進(jìn)行統(tǒng)計(jì),當(dāng)超過某一設(shè)定的閾值,給予封鎖。針對這種情況,可通過使用代理服務(wù)器解決,每隔幾次請求,切換一下所用代理的IP地址(或通過使用User-Agent列表解決,每次從列表里隨機(jī)選擇一個(gè)使用)。這樣的反爬蟲方法可能會誤傷用戶。
3. 希望抓取的數(shù)據(jù)是如果通過ajax請求得到的,假如通過網(wǎng)絡(luò)分析能夠找到該ajax請求,也能分析出請求所需的具體參數(shù),則直接模擬相應(yīng)的http請求,即可從響應(yīng)中得到對應(yīng)的數(shù)據(jù)。這種情況,跟普通的請求沒有什么區(qū)別。
4. 基于JavaScript的反爬蟲手段,主要是在響應(yīng)數(shù)據(jù)頁面之前,先返回一段帶有JavaScript代碼的頁面,用于驗(yàn)證訪問者有無JavaScript的執(zhí)行環(huán)境,以確定使用的是不是瀏覽器。
通常情況下,這段JS代碼執(zhí)行后,會發(fā)送一個(gè)帶參數(shù)key的請求,后臺通過判斷key的值來決定是響應(yīng)真實(shí)的頁面,還是響應(yīng)偽造或錯(cuò)誤的頁面。因?yàn)閗ey參數(shù)是動(dòng)態(tài)生成的,每次都不一樣,難以分析出其生成方法,使得無法構(gòu)造對應(yīng)的http請求。
下一篇:python腳本爬蟲入門
初級會計(jì)職稱中級會計(jì)職稱經(jīng)濟(jì)師注冊會計(jì)師證券從業(yè)銀行從業(yè)會計(jì)實(shí)操統(tǒng)計(jì)師審計(jì)師高級會計(jì)師基金從業(yè)資格稅務(wù)師資產(chǎn)評估師國際內(nèi)審師ACCA/CAT價(jià)格鑒證師統(tǒng)計(jì)資格從業(yè)
一級建造師二級建造師消防工程師造價(jià)工程師土建職稱房地產(chǎn)經(jīng)紀(jì)人公路檢測工程師建筑八大員注冊建筑師二級造價(jià)師監(jiān)理工程師咨詢工程師房地產(chǎn)估價(jià)師 城鄉(xiāng)規(guī)劃師結(jié)構(gòu)工程師巖土工程師安全工程師設(shè)備監(jiān)理師環(huán)境影響評價(jià)土地登記代理公路造價(jià)師公路監(jiān)理師化工工程師暖通工程師給排水工程師計(jì)量工程師
人力資源考試教師資格考試出版專業(yè)資格健康管理師導(dǎo)游考試社會工作者司法考試職稱計(jì)算機(jī)營養(yǎng)師心理咨詢師育嬰師事業(yè)單位教師招聘公務(wù)員公選考試招警考試選調(diào)生村官
執(zhí)業(yè)藥師執(zhí)業(yè)醫(yī)師衛(wèi)生資格考試衛(wèi)生高級職稱護(hù)士資格證初級護(hù)師主管護(hù)師住院醫(yī)師臨床執(zhí)業(yè)醫(yī)師臨床助理醫(yī)師中醫(yī)執(zhí)業(yè)醫(yī)師中醫(yī)助理醫(yī)師中西醫(yī)醫(yī)師中西醫(yī)助理口腔執(zhí)業(yè)醫(yī)師口腔助理醫(yī)師公共衛(wèi)生醫(yī)師公衛(wèi)助理醫(yī)師實(shí)踐技能內(nèi)科主治醫(yī)師外科主治醫(yī)師中醫(yī)內(nèi)科主治兒科主治醫(yī)師婦產(chǎn)科醫(yī)師西藥士/師中藥士/師臨床檢驗(yàn)技師臨床醫(yī)學(xué)理論中醫(yī)理論