国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

豆瓣大連電影票信息爬取與存儲

2021-07-04 13:10孫愛婷
科學(xué)與財富 2021年11期
關(guān)鍵詞:解析器關(guān)系數(shù)據(jù)庫爬蟲

摘 要:針對爬取工作量較重,分析內(nèi)容繁雜的網(wǎng)站而言,利用正則表達式的re模塊實現(xiàn)爬蟲是較困難的,此時需要更高效的BeautifulSoup分析工具來解決這一問題。爬取豆瓣電影票-大連城市網(wǎng)站中的全部電影列表,首先進行網(wǎng)頁源代碼分析,采用python自帶的html.parser解析器解析網(wǎng)頁,爬取所需電影信息,然后采用5種不同方式進行存儲,方便進行不同需求的數(shù)據(jù)挖掘和分析。

關(guān)鍵詞:網(wǎng)頁爬取;BeautifulSoup;解析器

一、BeautifulSoup

BeautifulSoup是網(wǎng)絡(luò)爬蟲必學(xué)的技能之一,是一個可以從HTML或XML文件中爬取數(shù)據(jù)的python庫。BeautifulSoup主要功能是從復(fù)雜的網(wǎng)頁解析和爬取HTML或XML內(nèi)容,哪怕此時使用BeautifulSoup實現(xiàn)的是海量的網(wǎng)站源碼的分析工作,我們會發(fā)現(xiàn),它的實現(xiàn)過程也非常簡單,極大地提高了分析源碼的效率。

同時,BeautifulSoup支持Python標準庫中的HTML解析器,還支持一些第三方庫的解析,如果不進行特殊的解析器安裝,Python則會使用默認的解析器。基于以上特性,BeautifulSoup已成為和Lxml一樣出色的Python解析器,為用戶靈活提供不同的網(wǎng)站數(shù)據(jù)爬取和解析策略。

二、基于BeautifulSoup的獨立數(shù)據(jù)爬取

1.實例分析

本實例的爬取目標是豆瓣電影票-大連城市網(wǎng)站中的全部電影列表,網(wǎng)站內(nèi)容見圖1,網(wǎng)站地址如下:https://movie.douban.com/cinema/nowplaying/dalian/,部分網(wǎng)頁源代碼如圖2所示,需要說明的是,由于網(wǎng)站內(nèi)容不斷地動態(tài)更新,因此每次運行得到的結(jié)果可能會有差異。

2.源代碼分析

我們的目標是電影列表,首先從圖2中搜索到目標位置,然后通過“soup.find_all(‘li’,class_=’list-item’)”,找到全部class_屬性為“l(fā)ist-item”的<li>標簽,爬取需要的電影信息。例如,item[‘data-title’]獲取<li>標簽中的指定屬性data-title(電影名)對應(yīng)的value值,item[‘id’]對應(yīng)屬性id(電影ID)的value值等,最后依次爬取需要的內(nèi)容即可。

3.具體代碼實現(xiàn)

本實例實現(xiàn)了爬取豆瓣電影票-大連城市網(wǎng)站中的全部電影列表,爬取信息完整代碼如圖3所示。

4.爬取信息存儲

通過以上程序可以得到所有大連城市電影信息,緊接著可以采用不同存儲方式進行存取,以下列出了5種存儲方式:

(1)存儲于.txt文檔

使用python讀寫文本數(shù)據(jù),需要使用open()方法,用于打開一個文件,將爬取內(nèi)容寫入當前打開的文件中。注意,open()方法打開文件后,一定不要忘記關(guān)閉文件對象,即結(jié)束文件的使用時調(diào)用close()方法。具體代碼見圖4所示。

(2)存儲于.csv文件

CSV文件以純文本形式存儲表格數(shù)據(jù)(數(shù)字和文本)。純文本意味著該文件是一個字符序列,不包含二進制數(shù)字。CSV文件由任意數(shù)量的記錄組成,記錄之間以某種換行符分隔;每條記錄由字段組成,字段間的分隔符是其他字符或字符串,最常見的是逗號或制表符。使用該存儲方式之前需要import csv,實現(xiàn)過程具體代碼見圖5所示。

(3)存儲于.xls表格

在python中,xlwt是讀取Excel文件的一個常用擴展模塊,可以實現(xiàn)創(chuàng)建表單、寫入指定單元格、指定單元格樣式等常見功能,人為使用Excel實現(xiàn)的絕大部分寫入功能,都可以使用這個擴展包實現(xiàn)。xlwt模塊同樣需要用戶單獨安裝:pip install xlwt,使用前導(dǎo)入xlwt包:import xlwt,實現(xiàn)過程如圖6所示。

(4)存儲于.json文件

JSON作為一種輕量級的數(shù)據(jù)交換格式,可作為讀寫數(shù)據(jù)的對象使用,通常使用JSON模塊,首先需要導(dǎo)入JSON庫:import json。在JSON模塊中,主要涉及json.dumps()、json.load()和json.loads()方法,實現(xiàn)過程如圖7所示。

(5)存儲于MongoDB數(shù)據(jù)庫

MongoDB是一個介于關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫中功能最豐富的、與關(guān)系數(shù)據(jù)庫最相近的NoSQL數(shù)據(jù)庫。使用前需要安裝MongoDB服務(wù)器端,然后安裝PyMongo模塊,該模塊是Python對Mongodb操作的接口包,它能夠?qū)崿F(xiàn)對MongoDB的增、刪、改、查及排序等操作。由于PyMongo模塊來源于第三方,因此未包含在Python的標準庫中,需要自行安裝:pip install PyMongo,然后導(dǎo)入PyMongo包:import pymongo,實現(xiàn)過程如圖8所示。

參考文獻:

[1]奚增輝等.應(yīng)用主題爬蟲的電力網(wǎng)絡(luò)輿情數(shù)據(jù)采集[J].西安工程大學(xué)學(xué)報, 202003).

[2]高雅婷,劉雅舉. 基于Python的網(wǎng)上購物數(shù)據(jù)爬取[J].現(xiàn)代信息科技,2020(5):16.

[3]王彥雅. 基于Python的廊坊市二手房數(shù)據(jù)爬取及分析[J].電腦知識與技術(shù),2020(29).

[4]于學(xué)斗,柏曉鈺.基于Python的城市天氣數(shù)據(jù)爬蟲程序分析[J].辦公自動化. 2020,27(07).

作者簡介:孫愛婷(1984-),女,漢族,遼寧大連人,講師,碩士,遼寧輕工職業(yè)學(xué)院,信息工程系大數(shù)據(jù)技術(shù)專業(yè)主任,主要研究方向:大數(shù)據(jù)技術(shù)。

猜你喜歡
解析器關(guān)系數(shù)據(jù)庫爬蟲
利用網(wǎng)絡(luò)爬蟲技術(shù)驗證房地產(chǎn)灰犀牛之說
關(guān)系數(shù)據(jù)庫在高爐數(shù)據(jù)采集系統(tǒng)中的應(yīng)用
基于多解析器的域名隱私保護機制
基于Python的網(wǎng)絡(luò)爬蟲和反爬蟲技術(shù)研究
基于Wireshark的列控中心以太網(wǎng)通信協(xié)議解析器的研究與實現(xiàn)
如何防御DNS陷阱?常用3種DNS欺騙手法
利用爬蟲技術(shù)的Geo-Gnutel la VANET流量采集
一種基于無關(guān)DNS的通信隱私保護技術(shù)研究
大數(shù)據(jù)環(huán)境下基于python的網(wǎng)絡(luò)爬蟲技術(shù)
基于索引結(jié)構(gòu)的關(guān)系數(shù)據(jù)庫關(guān)鍵詞檢索
栖霞市| 聊城市| 普安县| 论坛| 东光县| 龙泉市| 汽车| 梅州市| 砀山县| 湘西| 峨眉山市| 鄂州市| 太原市| 革吉县| 松阳县| 永顺县| 刚察县| 沛县| 蕉岭县| 西贡区| 丹阳市| 新蔡县| 三门峡市| 鄄城县| 资源县| 高陵县| 韩城市| 泸州市| 临桂县| 平阴县| 章丘市| 竹北市| 柞水县| 大丰市| 潞城市| 璧山县| 古交市| 新沂市| 嘉祥县| 麻江县| 梁平县|