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
主站蜘蛛池模板: 国产日韩精品欧美一区灰| 无码区日韩专区免费系列 | 国内精品自在自线视频香蕉| 91精品视频播放| 久久久久人妻精品一区三寸蜜桃| 91免费国产高清观看| 99久久性生片| 亚洲国产天堂久久综合226114| 欧洲av毛片| 亚洲女同欧美在线| 91网红精品在线观看| 日韩二区三区无| 天天做天天爱夜夜爽毛片毛片| 中文字幕有乳无码| 91激情视频| 久久精品人人做人人综合试看| 久久精品亚洲热综合一区二区| 一区二区午夜| 欧美日韩一区二区三区四区在线观看 | 精品小视频在线观看| 日本免费a视频| 国产又大又粗又猛又爽的视频| 无码 在线 在线| 久久综合伊人 六十路| 欧美性久久久久| 97狠狠操| 国产欧美日本在线观看| 国产在线观看91精品| 国产成人综合久久精品下载| 色婷婷色丁香| 国产精品人成在线播放| 日韩欧美中文字幕一本| 成人午夜久久| 91在线播放免费不卡无毒| 999精品视频在线| 久久无码av三级| 亚洲人成高清| 日本三级精品| 国产成人久久综合777777麻豆| 毛片在线区| 99久久精品免费观看国产| 免费国产小视频在线观看| 少妇高潮惨叫久久久久久| 播五月综合| 欧美亚洲一二三区| 国产激爽大片在线播放| 国产在线精彩视频二区| 国产资源免费观看| 国产自在线播放| 国产一级无码不卡视频| 91香蕉视频下载网站| 青草视频网站在线观看| 亚洲天堂精品在线观看| 国产激情无码一区二区三区免费| 91久久精品国产| 久久精品人人做人人爽电影蜜月| 亚洲天堂高清| 国产精品手机视频一区二区| 亚洲系列无码专区偷窥无码| 亚洲swag精品自拍一区| 亚洲精品色AV无码看| 99热这里只有精品久久免费 | 久久黄色小视频| 亚洲精品成人片在线播放| 婷婷久久综合九色综合88| 高清不卡一区二区三区香蕉| 青青草原国产一区二区| 第一页亚洲| 一区二区在线视频免费观看| 老司机久久99久久精品播放| 国产性精品| 91麻豆精品国产91久久久久| 91青青在线视频| 国产亚洲精品自在线| 乱人伦视频中文字幕在线| 欧美一区中文字幕| 中文纯内无码H| 成人毛片在线播放| 国产欧美日韩在线在线不卡视频| 国产美女91呻吟求| 成年人国产视频| 67194亚洲无码|