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在线观看免费| 国产屁屁影院| 国产精品亚洲综合久久小说| 亚洲国产日韩一区| 欧美一区二区福利视频| 亚洲成年人网| 国产精品福利在线观看无码卡| 亚洲乱伦视频| 在线观看国产一区二区三区99| 日本成人在线不卡视频| 日本高清有码人妻| 毛片久久网站小视频| av在线人妻熟妇| 国产一级做美女做受视频| 亚洲精品在线91| 极品性荡少妇一区二区色欲| 亚洲系列无码专区偷窥无码| 特黄日韩免费一区二区三区| 国产青青草视频| 黄色污网站在线观看| 国产网友愉拍精品| 呦视频在线一区二区三区| 国产av一码二码三码无码| 女人毛片a级大学毛片免费| 日韩在线中文| 一级做a爰片久久免费| 成年人视频一区二区| 亚洲精品手机在线| 伊人天堂网| 亚洲最大看欧美片网站地址| 午夜精品久久久久久久99热下载| 亚洲视频免费播放| 亚洲日韩AV无码精品| 亚洲黄网在线| 亚洲 日韩 激情 无码 中出| 久久人午夜亚洲精品无码区| 99在线观看精品视频| 国产永久在线观看| 国产福利在线免费| 在线无码av一区二区三区| 午夜视频免费一区二区在线看| 97影院午夜在线观看视频| 91精品啪在线观看国产91九色| 欧美激情综合| 亚洲人在线| 色呦呦手机在线精品| 欧美另类精品一区二区三区| 色婷婷成人| 5555国产在线观看| 成人综合久久综合| 国产成人一区免费观看| 欧美精品成人一区二区视频一| 91破解版在线亚洲| 免费高清毛片| 一区二区三区四区日韩| 毛片视频网址| 欧美一区精品| 亚洲综合精品第一页| 国产一区二区福利| 中文字幕丝袜一区二区| 一级毛片基地| 超碰aⅴ人人做人人爽欧美| 亚洲三级片在线看| 久久久久无码精品| 欧美狠狠干| 亚洲国产欧美中日韩成人综合视频| 日韩精品亚洲一区中文字幕| 91成人精品视频| 欧美一级片在线| 老司国产精品视频91| 国产人人射| 亚洲一级毛片免费观看| 亚洲色大成网站www国产| 欧美在线中文字幕| 亚洲精品777| 亚洲天堂视频网站| 熟妇丰满人妻av无码区| 永久在线播放| 亚洲第一成年网| 国产欧美自拍视频| 五月婷婷丁香综合| 国产免费久久精品44|