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
主站蜘蛛池模板: 美女一级免费毛片| 欧美精品亚洲精品日韩专区va| 欧美三级日韩三级| 香蕉综合在线视频91| 一区二区三区国产精品视频| 亚洲视频二| 麻豆精品久久久久久久99蜜桃| 亚洲另类第一页| 国产91丝袜在线播放动漫 | 成人免费午间影院在线观看| 久久精品人人做人人爽| 一级毛片不卡片免费观看| 欧美不卡二区| 日韩天堂视频| 亚洲人成网7777777国产| 四虎永久免费在线| 萌白酱国产一区二区| 国产 在线视频无码| 亚洲AV无码乱码在线观看代蜜桃 | 国产精品视频第一专区| 91精品啪在线观看国产| 日本久久网站| 国产一级一级毛片永久| 尤物国产在线| 国产女人在线观看| 欧美激情福利| 国产99免费视频| 亚洲午夜片| 丁香六月激情婷婷| 伊人国产无码高清视频| 国产精品永久免费嫩草研究院| 日韩在线视频网站| 永久天堂网Av| 亚洲精品视频在线观看视频| 麻豆精品国产自产在线| 91欧美在线| 久久国产香蕉| 成年女人a毛片免费视频| 天天综合网亚洲网站| 日本尹人综合香蕉在线观看| 国产午夜人做人免费视频| 国产色网站| 最新无码专区超级碰碰碰| 免费看av在线网站网址| аⅴ资源中文在线天堂| 亚洲毛片网站| 久久人人妻人人爽人人卡片av| 97在线国产视频| 国产精品黑色丝袜的老师| 无码一区二区波多野结衣播放搜索| 亚洲色欲色欲www网| 国产香蕉一区二区在线网站| 四虎影视库国产精品一区| 久久久久亚洲AV成人网站软件| 国产人碰人摸人爱免费视频| 激情综合五月网| www成人国产在线观看网站| 中文纯内无码H| 欧美午夜在线播放| 国产成人91精品免费网址在线| 亚洲精品自拍区在线观看| 日韩A级毛片一区二区三区| 免费毛片a| 国产三级成人| 在线观看av永久| 国产97色在线| 国产午夜小视频| 妇女自拍偷自拍亚洲精品| 国产精品女同一区三区五区| 久久国产精品国产自线拍| 青草视频网站在线观看| 亚洲欧美综合在线观看| 欧美亚洲综合免费精品高清在线观看| 免费a级毛片视频| 99视频在线观看免费| 国产精品夜夜嗨视频免费视频| 国产精品原创不卡在线| 极品国产在线| 无码免费的亚洲视频| 久久综合成人| 日本黄色不卡视频| 久久鸭综合久久国产|