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

        ?

        基于Python 的網(wǎng)絡(luò)爬蟲技術(shù)

        2020-09-11 03:41:56四川水利職業(yè)技術(shù)學(xué)院趙文杰古榮龍
        河北農(nóng)機(jī) 2020年8期
        關(guān)鍵詞:解析器爬蟲網(wǎng)頁

        四川水利職業(yè)技術(shù)學(xué)院 趙文杰 古榮龍

        隨著互聯(lián)網(wǎng)技術(shù)的快速發(fā)展和大數(shù)據(jù)時(shí)代的到來,網(wǎng)絡(luò)數(shù)據(jù)呈爆炸式的發(fā)展,如何從海量的數(shù)據(jù)中快速高效地提取用戶感興趣的Web 信息,在大數(shù)據(jù)處理中面臨著巨大的挑戰(zhàn)。雖然目前通過搜索引擎可以滿足日常基本的需求,但對特定的內(nèi)容不能進(jìn)行集中處理和可視化展示。另外,手動(dòng)搜索的效率低,對數(shù)據(jù)選取的時(shí)間成本較高。網(wǎng)絡(luò)爬蟲技術(shù)可以很好地解決這種問題,自行定制規(guī)則選取特定內(nèi)容,可以讓我們更精準(zhǔn)地獲取有效數(shù)據(jù)。同時(shí)網(wǎng)絡(luò)爬蟲可以根據(jù)網(wǎng)頁內(nèi)容進(jìn)行深度和廣度搜索,實(shí)現(xiàn)自動(dòng)化運(yùn)行[1]。

        1 爬蟲技術(shù)

        網(wǎng)絡(luò)爬蟲,是按照設(shè)定的規(guī)則自動(dòng)抓取網(wǎng)絡(luò)信息的程序。網(wǎng)頁中包含了文字信息、超鏈接信息。從功能上來講,爬蟲的處理過程一般包括數(shù)據(jù)采集、處理、儲(chǔ)存三個(gè)部分。在網(wǎng)絡(luò)爬蟲的系統(tǒng)框架中,主過程由控制器、解析器、資源庫三部分組成??刂破鞯闹饕ぷ魇秦?fù)責(zé)給多線程中的各個(gè)爬蟲線程分配工作任務(wù)。解析器的主要工作是下載網(wǎng)頁,進(jìn)行頁面的處理,主要是將一些JS 腳本標(biāo)簽、CSS 代碼內(nèi)容、空格字符、HTML 標(biāo)簽等內(nèi)容處理掉,爬蟲的基本工作由解析器完成。資源庫用來存放下載到的網(wǎng)頁資源,一般都采用大型的數(shù)據(jù)庫存儲(chǔ)[2]。

        網(wǎng)絡(luò)爬蟲技術(shù)分為以下幾類:通用網(wǎng)絡(luò)爬蟲、聚焦網(wǎng)絡(luò)爬蟲、增量網(wǎng)絡(luò)爬蟲、深層網(wǎng)絡(luò)爬蟲[3]。這幾種爬蟲的關(guān)鍵技術(shù)是類似的。爬蟲獲取網(wǎng)絡(luò)數(shù)據(jù)的方式:模擬瀏覽器發(fā)送請求,獲取網(wǎng)頁代碼——提取有用數(shù)據(jù),解析內(nèi)容,保存數(shù)據(jù)。

        2 Python 簡述

        Python 是一種解釋型、面向?qū)ο?、?dòng)態(tài)數(shù)據(jù)類型的高級程序設(shè)計(jì)語言。它是解釋型語言,但是也可以編譯成.pyc 跨平臺(tái)的字節(jié)碼文件。.pyc 文件有幾個(gè)好處:一是可以簡單地隱藏源碼,二是提高載入速度,三是跨平臺(tái)。相較于C++、Java 語言,Python 更易于學(xué)習(xí),有一個(gè)廣泛的標(biāo)準(zhǔn)庫。同時(shí)可以結(jié)合Java 或C/C++語言,封裝成Python 可以調(diào)用的擴(kuò)展庫,便于擴(kuò)展和移植。Python 提供了非常豐富的針對網(wǎng)絡(luò)協(xié)議的標(biāo)準(zhǔn)庫,能簡單高效地進(jìn)行網(wǎng)頁抓取、網(wǎng)頁解析、數(shù)據(jù)存儲(chǔ)等,使程序員可以集中精力處理程序邏輯[4]。

        3 爬蟲案例

        本文通過Python 語言來實(shí)現(xiàn)一個(gè)簡單的聚焦型爬蟲,爬取當(dāng)當(dāng)網(wǎng)上的圖書信息,將圖書的封面圖片,圖書書名、圖書鏈接頁面保存在本地csv 文件中。本文在Python3.6 環(huán)境下調(diào)試完成。

        該系統(tǒng)主要由三個(gè)方面構(gòu)成。第一,Url 管理器,負(fù)責(zé)提取網(wǎng)絡(luò)的url 地址。第二,網(wǎng)頁下載器,從網(wǎng)絡(luò)上下載網(wǎng)站內(nèi)容,獲取頁面中詳細(xì)信息;第三,頁面解析器,針對網(wǎng)頁下載器中的信息,提取目標(biāo)信息;第四,數(shù)據(jù)存儲(chǔ)器,完成數(shù)據(jù)持久化。

        具體實(shí)現(xiàn)過程如下:

        (1)打開當(dāng)當(dāng)網(wǎng)頁面,搜索關(guān)鍵字“Python”,結(jié)果如圖1 所示。

        圖1 搜索結(jié)果圖

        (2)分析源代碼,可利用開發(fā)者工具查看每個(gè)數(shù)據(jù)對應(yīng)的元素及class 名稱,如圖2 所示。

        圖2 網(wǎng)頁源代碼

        (3)對網(wǎng)頁進(jìn)行解析,可以使用正則表達(dá)式、BeautifulSoup、lxml 等多種方式來解析網(wǎng)頁,每種方法各有特色,使用時(shí)結(jié)合實(shí)際需要選擇一種適合的解析方法。

        #導(dǎo)入程序需要的庫

        import urllib.request

        import time

        import csv

        import codecs

        from bs4 import BeautifulSoup

        #打開網(wǎng)頁,輸入關(guān)鍵字”python”

        圖3 保存在csv 文件中的數(shù)據(jù)

        #爬取地址,當(dāng)當(dāng)Python 的書籍太多,我們只爬取前20 頁的信息

        url="http://search.dangdang.com/?key=python&act=input&s how=big&page_index="

        #請求頭

        headers={'

        User-Agent':'Mozilla/5.0 (Windows NT 6.1;Win64;x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36'

        }

        index=1

        while index<=20:

        #發(fā)起請求

        request = urllib.request.Request (url=url+str (index),headers=headers)

        response=urllib.request.urlopen(request)

        index=index+1

        #通過BeautifulSoup 的find_all 方法解析頁面

        soup=BeautifulSoup(response)

        temps=soup.find_all('a',class_='pic')

        global books

        books=books+temps

        (4)數(shù)據(jù)持久化,將爬取的數(shù)據(jù)保留在本地。數(shù)據(jù)存儲(chǔ)的方式方法有多種,可以保留在普通文件中,如txt、csv 等。也可以存儲(chǔ)在數(shù)據(jù)庫中,如MySQL。本文將爬取到的數(shù)據(jù)寫入csv 文件,結(jié)果如圖3 所示。代碼如下:

        file_name='PythonBook.csv'

        #指定編碼為utf-8,避免寫csv 文件出現(xiàn)中文亂碼

        with codecs.open(file_name,'w','utf-8')as csvfile:

        filednames=['書名','頁面地址','圖片地址']

        writer=csv.DictWriter(csvfile,fieldnames=filednames)

        writer.writeheader()

        for book in books:

        if len(list(book.children)[0].attrs)==3:

        img=list(book.children)[0].attrs['data-original']

        else:

        img=list(book.children)[0].attrs['src']

        try:

        writer.writerow({' 書名':book.attrs['title'], ' 頁面地址':book.attrs['href'],'圖片地址':img})

        except UnicodeEncodeError:

        print("編碼錯(cuò)誤,該數(shù)據(jù)無法寫到文件中")

        4 結(jié)語

        本文介紹了基于Python 的網(wǎng)絡(luò)爬蟲技術(shù)的工作流程,以實(shí)際案例演示了當(dāng)當(dāng)網(wǎng)數(shù)據(jù)的爬取過程。現(xiàn)在已經(jīng)進(jìn)入大數(shù)據(jù)時(shí)代,網(wǎng)絡(luò)爬蟲技術(shù)具有極高的實(shí)際應(yīng)用價(jià)值,作為一種自動(dòng)收集數(shù)據(jù)的手段,在各行各業(yè)都有廣泛的應(yīng)用。同時(shí)也能為后續(xù)數(shù)據(jù)處理、數(shù)據(jù)分析做好準(zhǔn)備。

        猜你喜歡
        解析器爬蟲網(wǎng)頁
        利用網(wǎng)絡(luò)爬蟲技術(shù)驗(yàn)證房地產(chǎn)灰犀牛之說
        基于多解析器的域名隱私保護(hù)機(jī)制
        基于Python的網(wǎng)絡(luò)爬蟲和反爬蟲技術(shù)研究
        基于Wireshark的列控中心以太網(wǎng)通信協(xié)議解析器的研究與實(shí)現(xiàn)
        如何防御DNS陷阱?常用3種DNS欺騙手法
        基于CSS的網(wǎng)頁導(dǎo)航欄的設(shè)計(jì)
        電子制作(2018年10期)2018-08-04 03:24:38
        利用爬蟲技術(shù)的Geo-Gnutel la VANET流量采集
        電子測試(2018年1期)2018-04-18 11:53:04
        一種基于無關(guān)DNS的通信隱私保護(hù)技術(shù)研究
        電子世界(2018年14期)2018-04-15 16:14:25
        基于URL和網(wǎng)頁類型的網(wǎng)頁信息采集研究
        電子制作(2017年2期)2017-05-17 03:54:56
        大數(shù)據(jù)環(huán)境下基于python的網(wǎng)絡(luò)爬蟲技術(shù)
        電子制作(2017年9期)2017-04-17 03:00:46
        一个少妇的淫片免费看| 二区久久国产乱子伦免费精品| 欧美高h视频| 人妻系列少妇极品熟妇| 两人前一后地插着她丰满| 国产色欲av一区二区三区| 国产97在线 | 亚洲| 国产欧美久久久另类精品| 激情亚洲综合熟女婷婷| 男女深夜视频网站入口| 午夜精品久久久久久久久| 伊人久久精品久久亚洲一区| 亚洲国产精品国自产电影| 青青青伊人色综合久久| 国产三级不卡视频在线观看| 免费观看a级毛片| 婷婷中文字幕综合在线| 国产亚洲精品国产福利在线观看| 极品少妇一区二区三区四区| 免费观看人妻av网站| 天堂а在线中文在线新版| 国产内射在线激情一区| 欧美日一本| 亚洲成在人线天堂网站| 久久久久亚洲精品男人的天堂| 无码人妻精品一区二区在线视频| 亚洲中文字幕无码久久2018| 国产精品高清亚洲精品| 国产精品成人一区二区不卡| 日本19禁啪啪吃奶大尺度| 人妻少妇精品视中文字幕国语| 亚洲中文字幕精品一区二区| 自拍视频在线观看国产| 久久99国产精品久久99| 国产美女露脸口爆吞精| 制服丝袜人妻中出第一页| 日韩一区三区av在线| 国产精品高清一区二区三区不卡| 亚洲一线二线三线写真| 69国产成人综合久久精| 亚洲一区二区三区熟妇|