亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Python的網絡爬蟲與反爬蟲技術的研究

        2021-03-16 10:08:22江西科技師范大學張寶剛
        電子世界 2021年4期
        關鍵詞:爬蟲網頁標簽

        江西科技師范大學 張寶剛

        隨著互聯(lián)網的快速發(fā)展,網絡中的信息量也變得越來越巨大。如何從龐大的互聯(lián)網中快速準確的收集到我們需要的信息,成為了一個巨大的挑戰(zhàn)。因此,網絡爬蟲技術應運而生,相比較于傳統(tǒng)的人工搜集,網絡爬蟲可以快速的持續(xù)的準確的搜集到我們需要的信息。但對于網站內容提供者而言,并不希望自己的數(shù)據信息被別人搜集到,且爬蟲程序的大量請求,也會對服務器造成一定的壓力,因此就出現(xiàn)了反爬蟲技術。本文將通過一個案例系統(tǒng)的介紹網絡爬蟲的原理,并指出一些有效的反爬蟲技術。

        圖1 目標網頁源碼分析

        互聯(lián)網中蘊含著大量的信息,如何有效的獲取這些信息并利用這些龐大的信息就變成了一個不小的挑戰(zhàn)。傳統(tǒng)的人工收集信息的方式效率低、易出錯,因此就出現(xiàn)了網絡爬蟲程序,它是一種根據事先制定好的規(guī)則主動的搜集萬維網中的數(shù)據的一種程序。我們上網用的搜索引擎采用的就是爬蟲技術,用無數(shù)個爬蟲每天爬取各種各樣的網站,并把這些網站放到數(shù)據庫中,等著我們去搜索。網絡爬蟲根據其實現(xiàn)架構大致可分為深層網絡爬蟲(Deep Web Crawler)、通用網絡爬蟲(General Purpose Web Crawler)、聚焦網絡爬蟲(Focused Web Crawler)、增量式網絡爬蟲(Incremental Web Crawler)等。本研究主要通過爬取全國高校官網排名情況來介紹爬蟲技術的使用,并介紹一些有效的反爬蟲技術。

        1 爬蟲程序的開發(fā)

        1.1 請求網絡數(shù)據

        開發(fā)爬蟲程序的第一步是請求網絡數(shù)據,首先我們要找到要爬取數(shù)據的目標網頁的url地址,然后利用Requests請求,獲取目標html頁面的源碼。本研究以爬取站長之家的高等院校網站排行榜里的數(shù)據為例,該頁面地址:https://top.chinaz.com/hangye/index_jiaoyu_daxue.html,我們通過Requests請求該頁面就可以拿到該目標網頁的源代碼了。

        1.2 html頁面解析

        通過上一個步驟后,我們已經獲取到了目標網頁的源代碼,下面我們就可以通過解析源代碼獲取我們想要得到的數(shù)據了。在解析前,我們還要先分析網頁源代碼,然后才能解析。通過Google Chrome瀏覽器的開發(fā)者模式,我們可以看到整個網頁的源碼,在這里我們可以清晰的看到,我們需要的數(shù)據在源碼里的什么地方,如圖1所示。

        圖2 代碼實現(xiàn)圖

        由圖1可以看出,我們需要的的信息,都在class=listCentent的

          標簽里,
            標簽里以列表的形式放著各個學校的排名信息放在
          • 標簽里,因此我們在解析時只需要獲取到這個ul標簽的所有SS信息,并遍歷里面的
          • 標簽就可以獲取到所有的高校的網站排名信息了。其代碼實現(xiàn)如圖2所示。

            在解析的過程中主要使用的是BeautifulSoup庫。 BeautifulSoup默認使用Python標準庫里的HTML解釋器,它還可以支持一些其他的第三方解釋器,比如lxml、html5lib等,這里我們使用的是lxml解釋器,它具有速度快,文檔容錯能力強的特點。在解析時,我們先用BeautifulSoup的find函數(shù)將標簽名和樣式名傳入進去,這樣就可以得到我們要爬取的信息所在的

              標簽所有的
            • 標簽列表了,通過對網頁的分析我們可以發(fā)現(xiàn),每個
            • 標簽對應著一條高校網站排名信息數(shù)據,因此,我們只需要遍歷
            • 標簽就可以獲取所有的高校網站的具體排名信息了。每一條數(shù)據,我們只獲取名稱、鏈接、alexa、bd_weight、反鏈數(shù)、網站簡介這幾個數(shù)據。

              2 數(shù)據的存儲

              通過以上的操作,我們已經成功的獲取到了我們想要的信息。接下來,我們要做的就是將我們獲取到的信息保存下來,避免反復爬取浪費資源。本研究將數(shù)據保存在MySQL數(shù)據庫,MySQL是一種開源的、關系型數(shù)據庫,它使用結構化查詢語言SQL進行數(shù)據庫管理。在使用MySQL存儲數(shù)據前,我們要先建立一張表,用來存放我們解析到的數(shù)據。建表語句如圖3所示。

              圖3 建表語句圖

              我們設置id為主鍵,并且其是自動遞增的,用id作為每一條數(shù)據的唯一識別碼。name代表高校的名稱,link為高校官網的網頁鏈接,chain_num為反鏈接數(shù),info為高校簡介。創(chuàng)建完數(shù)據表后,我們就可以往表里插入我們解析到的數(shù)據了。

              3 反爬蟲技術

              網絡爬蟲不僅可以輕松的“竊取”別人發(fā)布到網上的資源,更會給服務器帶來額外的壓力。因為網絡爬蟲會無休止的訪問目標服務器,其帶來的傷害相當于DDOS攻擊,消耗目標服務器的帶寬、內存、磁盤和cpu等資源,導致正常用戶的網絡請求異常。因此,我們需要反爬蟲程序來幫助我們抵御爬蟲程序。

              3.1 User-Agent控制請求

              User-Agent中可以攜帶一串用戶設備信息的字符串,包括瀏覽器、操作系統(tǒng)、cpu等信息。我們可以通過在服務器設置user-agent白名單,只有符合條件的user-agent才能訪問服務器。它的缺點就是很容易被爬蟲程序偽造頭部信息,進而被破解掉。

              3.2 IP限制

              我們知道爬蟲程序請求服務器速度是特別快的,并且訪問量也特別大,正常用戶不可能在短時間里有這么大的訪問量,通過這個特點,我們可以在服務器設置一個閾值,將短時間內訪問量大的IP地址加入黑名單,禁止其訪問,以達到反爬蟲的目的。其缺點也很明顯,容易誤傷正常訪問的用戶,而且爬蟲程序也可以利用IP代理實現(xiàn)換IP的目的,避免其IP被加入黑名單。

              3.3 session訪問限制

              session是用戶請求服務器的憑證,網絡爬蟲往往通過攜帶正常用戶session信息的方式,模擬正常用戶請求服務器。因此,我們同樣可以根據短時間內的訪問量的大小判斷是否為爬蟲程序,將疑似爬蟲程序的用戶的session加入黑名單。此方法缺點就是爬蟲程序可以注冊多個賬號,用多個session輪流進行請求,避免被加入黑名單。

              3.4 蜘蛛陷阱

              蜘蛛陷阱通過引導爬蟲程序陷入無限循環(huán)的陷阱,消耗爬蟲程序的資源,導致其崩潰而無法繼續(xù)爬取數(shù)據。此方法的缺點就是會新增許多浪費資源的文件和目錄,而且對正常網站排名有影響,會造成搜索引擎的爬蟲程序也無法爬取信息,進而導致在搜索引擎的網站排名靠后。

              3.5 驗證碼

              在用戶登錄或訪問某些重要信息時可以使用驗證碼來阻擋爬蟲程序。驗證碼分為圖片驗證碼、短信驗證碼、數(shù)值計算驗證碼、滑動驗證碼、圖案標記驗證碼等。這些驗證碼都可以有效的阻擋爬蟲程序,區(qū)分機器和正常用戶,使用戶可以正常訪問服務器,而爬蟲程序因識別不了驗證碼,所以爬蟲程序不能進一步訪問服務器,以達到反爬蟲的目的。驗證碼的缺點是影響用戶體驗。

              3.6 動態(tài)加載數(shù)據

              前面介紹的通過Python的Requests函數(shù)庫請求網頁,只能獲取到靜態(tài)網頁的數(shù)據。如果我們的網頁通過js動態(tài)的加載數(shù)據,爬蟲程序要爬取我們的數(shù)據就沒有那么簡單了。但是,爬蟲程序可以通過抓包的形式得到url請求鏈接,然后模擬url請求進行數(shù)據抓取。

              3.7 數(shù)據加密

              前端請求服務器前,將請求參數(shù)、user-agent、cookie等參數(shù)進行加密,用加密后的數(shù)據請求服務器,這樣的話網絡爬蟲程序不知道我們的加密規(guī)則,就無法進行模擬請求我們的服務器。但是,這種方式的加密算法是寫在js代碼里的,很容易被用戶找到并且破解。

              以上的反爬蟲技術,都可以在一定程度上實現(xiàn)反爬蟲的目的,給爬蟲程序增加一定的困難。在實際應用中,如果能將以上技術組合起來使用,反爬蟲的效果會更佳。當然現(xiàn)在還沒有任何一種通用的反爬蟲技術可以抵御所有的爬蟲,開發(fā)人員應該根據實際情況選擇合適的反爬蟲技術。

              結語:使用Python語言編寫爬蟲程序是一種人工智能大數(shù)據時代下進行數(shù)據采集與分析的重要方式。本文以爬取站長之家中的全國高校網站排名信息為例,介紹了簡單Python爬蟲程序的爬蟲原理,以及一些反爬蟲的技術和它的優(yōu)缺點。爬蟲技術和反爬蟲技術,天生的相生相克、相輔相成,它們之間并沒有誰對誰錯、誰好誰壞,主要看使用他們的人是出于什么目的。

              猜你喜歡
              爬蟲網頁標簽
              利用網絡爬蟲技術驗證房地產灰犀牛之說
              基于Python的網絡爬蟲和反爬蟲技術研究
              無懼標簽 Alfa Romeo Giulia 200HP
              車迷(2018年11期)2018-08-30 03:20:32
              基于CSS的網頁導航欄的設計
              電子制作(2018年10期)2018-08-04 03:24:38
              不害怕撕掉標簽的人,都活出了真正的漂亮
              海峽姐妹(2018年3期)2018-05-09 08:21:02
              利用爬蟲技術的Geo-Gnutel la VANET流量采集
              電子測試(2018年1期)2018-04-18 11:53:04
              基于URL和網頁類型的網頁信息采集研究
              電子制作(2017年2期)2017-05-17 03:54:56
              大數(shù)據環(huán)境下基于python的網絡爬蟲技術
              電子制作(2017年9期)2017-04-17 03:00:46
              標簽化傷害了誰
              網頁制作在英語教學中的應用
              電子測試(2015年18期)2016-01-14 01:22:58
        中文人妻熟妇乱又伦精品| 免费av一区男人的天堂| 国产成年无码aⅴ片在线观看| 最新国内视频免费自拍一区| 精品人妻一区二区三区浪人在线| 曰本无码人妻丰满熟妇啪啪| 久久国产A√无码专区亚洲| 国产精品性一区二区三区| 亚洲中文高清乱码av中文| 久久熟妇少妇亚洲精品| 国内精品久久久久久久97牛牛| 孩交精品xxxx视频视频| 亚洲男人天堂av在线| 久久久噜噜噜久久熟女| 亚洲精品国偷拍自产在线| 天躁夜夜躁狼狠躁| 禁止免费无码网站| 日本一区二区三级免费| 亚洲综合av永久无码精品一区二区| 八戒网站免费观看视频| 欧美日本免费一区二| 在线观看国产精品一区二区不卡| 国产成人av无码精品| 久久精品人人做人人爽| 韩日无码不卡| 亚洲国产精品久久久婷婷| 人妻丰满熟妇岳av无码区hd| 国产成人无码一二三区视频| 一区二区三区四区在线观看视频| 亚洲麻豆视频免费观看| 日本老熟妇毛茸茸| 免费国产一级片内射老| av在线播放免费观看| 67194熟妇人妻欧美日韩| 最近日韩激情中文字幕| 日本高清免费播放一区二区| 漂亮人妻被强了中文字幕| 麻豆精品国产精华精华液好用吗| 亚洲Av午夜精品a区| 91精品福利一区二区三区| 国产太嫩了在线观看|