华南俳烁实业有限公司

python

當(dāng)前位置:中華考試網(wǎng) >> python >> python爬蟲 >> 文章內(nèi)容

python網(wǎng)絡(luò)爬蟲合法嗎

來源:中華考試網(wǎng)  [2020年10月30日]  【

  什么是網(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請求。

責(zé)編:fushihao
  • 會計(jì)考試
  • 建筑工程
  • 職業(yè)資格
  • 醫(yī)藥考試
  • 外語考試
  • 學(xué)歷考試
洪雅县| 东安县| 喀喇沁旗| 株洲市| 阜南县| 芜湖县| 平阴县| 太保市| 揭东县| 阿勒泰市| 许昌县| 米林县| 勃利县| 亚东县| 容城县| 辉县市| 尼木县| 永昌县| 金平| 高雄市| 军事| 安吉县| 苏尼特左旗| 武邑县| 侯马市| 运城市| 宝清县| 冀州市| 鄂托克旗| 新营市| 修文县| 桃园县| 电白县| 临江市| 大理市| 长葛市| 临夏市| 定南县| 保山市| 澳门| 封丘县|