999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

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

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

四川水利職業(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)。雖然目前通過搜索引擎可以滿足日常基本的需求,但對(duì)特定的內(nèi)容不能進(jìn)行集中處理和可視化展示。另外,手動(dòng)搜索的效率低,對(duì)數(shù)據(jù)選取的時(shí)間成本較高。網(wǎng)絡(luò)爬蟲技術(shù)可以很好地解決這種問題,自行定制規(guī)則選取特定內(nèi)容,可以讓我們更精準(zhǔn)地獲取有效數(shù)據(jù)。同時(shí)網(wǎng)絡(luò)爬蟲可以根據(jù)網(wǎng)頁(yè)內(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)頁(yè)中包含了文字信息、超鏈接信息。從功能上來講,爬蟲的處理過程一般包括數(shù)據(jù)采集、處理、儲(chǔ)存三個(gè)部分。在網(wǎng)絡(luò)爬蟲的系統(tǒng)框架中,主過程由控制器、解析器、資源庫(kù)三部分組成。控制器的主要工作是負(fù)責(zé)給多線程中的各個(gè)爬蟲線程分配工作任務(wù)。解析器的主要工作是下載網(wǎng)頁(yè),進(jìn)行頁(yè)面的處理,主要是將一些JS 腳本標(biāo)簽、CSS 代碼內(nèi)容、空格字符、HTML 標(biāo)簽等內(nèi)容處理掉,爬蟲的基本工作由解析器完成。資源庫(kù)用來存放下載到的網(wǎng)頁(yè)資源,一般都采用大型的數(shù)據(jù)庫(kù)存儲(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ā)送請(qǐng)求,獲取網(wǎng)頁(yè)代碼——提取有用數(shù)據(jù),解析內(nèi)容,保存數(shù)據(jù)。

2 Python 簡(jiǎn)述

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

3 爬蟲案例

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

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

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

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

圖1 搜索結(jié)果圖

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

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

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

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

import urllib.request

import time

import csv

import codecs

from bs4 import BeautifulSoup

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

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

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

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

#請(qǐng)求頭

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ā)起請(qǐng)求

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

response=urllib.request.urlopen(request)

index=index+1

#通過BeautifulSoup 的find_all 方法解析頁(yè)面

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ù)庫(kù)中,如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=['書名','頁(yè)面地址','圖片地址']

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'], ' 頁(yè)面地址':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)備。

猜你喜歡
頁(yè)面信息
微信群聊總是找不到,打開這個(gè)開關(guān)就好了
大狗熊在睡覺
刷新生活的頁(yè)面
訂閱信息
中華手工(2017年2期)2017-06-06 23:00:31
展會(huì)信息
同一Word文檔 縱橫頁(yè)面并存
淺析ASP.NET頁(yè)面導(dǎo)航技術(shù)
其實(shí)IE也懂Chrome的心
信息
健康信息
祝您健康(1987年3期)1987-12-30 09:52:32
主站蜘蛛池模板: 99热这里只有免费国产精品| 日韩欧美中文字幕一本| 鲁鲁鲁爽爽爽在线视频观看| 欧美一区二区三区香蕉视| 999精品视频在线| 精品成人一区二区| 丝袜美女被出水视频一区| 国产午夜看片| 九色在线视频导航91| 美女无遮挡免费网站| 欧美一级夜夜爽www| 欧洲欧美人成免费全部视频| jizz在线免费播放| a毛片在线| 亚洲乱码在线视频| 日本高清免费一本在线观看 | 久久综合AV免费观看| 看国产一级毛片| 欧美成人午夜在线全部免费| 久久毛片网| 99久久精品无码专区免费| 亚洲天堂伊人| 日本一区二区不卡视频| 欧美成人手机在线视频| 亚洲色图欧美视频| 亚洲一道AV无码午夜福利| 波多野吉衣一区二区三区av| 91福利在线观看视频| 日本三区视频| 男女性午夜福利网站| 中字无码精油按摩中出视频| 久久亚洲国产最新网站| 日韩精品成人网页视频在线| 国产性猛交XXXX免费看| 中文字幕在线观| 在线免费无码视频| 免费国产福利| 免费一级毛片在线播放傲雪网| 久久9966精品国产免费| 国产成人永久免费视频| 五月丁香伊人啪啪手机免费观看| 国产美女免费| 狠狠操夜夜爽| 欧美a在线看| 亚洲日韩高清在线亚洲专区| 色有码无码视频| 久久久久久高潮白浆| 国产精品网址在线观看你懂的| 亚洲人成网线在线播放va| 亚洲va在线∨a天堂va欧美va| 国产福利在线免费观看| 婷婷六月在线| 日韩欧美综合在线制服| 四虎精品黑人视频| 国内精品免费| 亚洲精品无码AⅤ片青青在线观看| 亚洲无线观看| 国产成人狂喷潮在线观看2345| 亚洲人成网18禁| 中文字幕色在线| 亚洲av无码片一区二区三区| 国产一区二区影院| 在线观看欧美精品二区| 97人妻精品专区久久久久| 一本二本三本不卡无码| 亚洲一级毛片在线观| 精品国产自在现线看久久| 婷婷综合缴情亚洲五月伊| 久久久精品无码一二三区| 国内精品视频| 波多野结衣AV无码久久一区| 国产高清不卡| 91探花国产综合在线精品| 狠狠干综合| 亚洲视屏在线观看| 97综合久久| 国产黄在线观看| 亚洲精品无码久久久久苍井空| 露脸国产精品自产在线播| 亚洲一区二区三区麻豆| 永久免费无码成人网站| 亚洲中文在线视频|