国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開發(fā) > Python > 正文

Python利用Scrapy框架爬取豆瓣電影示例

2024-09-09 19:03:40
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

本文實(shí)例講述了Python利用Scrapy框架爬取豆瓣電影。分享給大家供大家參考,具體如下:

1、概念

Scrapy是一個(gè)為了爬取網(wǎng)站數(shù)據(jù),提取結(jié)構(gòu)性數(shù)據(jù)而編寫的應(yīng)用框架。 可以應(yīng)用在包括數(shù)據(jù)挖掘,信息處理或存儲(chǔ)歷史數(shù)據(jù)等一系列的程序中。

通過(guò)Python包管理工具可以很便捷地對(duì)scrapy進(jìn)行安裝,如果在安裝中報(bào)錯(cuò)提示缺少依賴的包,那就通過(guò)pip安裝所缺的包

pip install scrapy

scrapy的組成結(jié)構(gòu)如下圖所示

引擎Scrapy Engine,用于中轉(zhuǎn)調(diào)度其他部分的信號(hào)和數(shù)據(jù)傳遞

調(diào)度器Scheduler,一個(gè)存儲(chǔ)Request的隊(duì)列,引擎將請(qǐng)求的連接發(fā)送給Scheduler,它將請(qǐng)求進(jìn)行排隊(duì),但引擎需要時(shí)再將隊(duì)列中的第一個(gè)請(qǐng)求發(fā)送給引擎

下載器Downloader,引擎將請(qǐng)求Request鏈接發(fā)送給Downloader之后它就從互聯(lián)網(wǎng)上下載相應(yīng)的數(shù)據(jù),并將返回的數(shù)據(jù)Responses交給引擎

爬蟲Spiders,引擎將下載的Responses數(shù)據(jù)交給Spiders進(jìn)行解析,提取我們需要的網(wǎng)頁(yè)信息。如果在解析中發(fā)現(xiàn)有新的所需要的url連接,Spiders會(huì)將鏈接交給引擎存入調(diào)度器

管道Item Pipline,爬蟲會(huì)將頁(yè)面中的數(shù)據(jù)通過(guò)引擎交給管道做進(jìn)一步處理,進(jìn)行過(guò)濾、存儲(chǔ)等操作

下載中間件Downloader Middlewares,自定義擴(kuò)展組件,用于在請(qǐng)求頁(yè)面時(shí)封裝代理、http請(qǐng)求頭等操作

爬蟲中間件Spider Middlewares,用于對(duì)進(jìn)入Spiders的Responses和出去的Requests等數(shù)據(jù)作一些修改

scrapy的工作流程:首先我們將入口url交給spider爬蟲,爬蟲通過(guò)引擎將url放入調(diào)度器,經(jīng)調(diào)度器排隊(duì)之后返回第一個(gè)請(qǐng)求Request,引擎再將請(qǐng)求轉(zhuǎn)交給下載器進(jìn)行下載,下載好的數(shù)據(jù)交給爬蟲進(jìn)行爬取,爬取的數(shù)據(jù)一部分是我們需要的數(shù)據(jù)交給管道進(jìn)行數(shù)據(jù)清洗和存儲(chǔ),還有一部分是新的url連接會(huì)再次交給調(diào)度器,之后再循環(huán)進(jìn)行數(shù)據(jù)爬取

2、新建Scrapy項(xiàng)目

首先在存放項(xiàng)目的文件夾內(nèi)打開命令行,在命令行下輸入scrapy startproject 項(xiàng)目名稱,就會(huì)在當(dāng)前文件夾自動(dòng)創(chuàng)建項(xiàng)目所需的python文件,例如創(chuàng)建一個(gè)爬取豆瓣電影的項(xiàng)目douban,其目錄結(jié)構(gòu)如下:

Db_Project/  scrapy.cfg        --項(xiàng)目的配置文件  douban/          --該項(xiàng)目的python模塊目錄,在其中編寫python代碼    __init__.py      --python包的初始化文件    items.py       --用于定義item數(shù)據(jù)結(jié)構(gòu)    pipelines.py     --項(xiàng)目中的pipelines文件    settings.py      --定義項(xiàng)目的全局設(shè)置,例如下載延遲、并發(fā)量    spiders/       --存放爬蟲代碼的包目錄      __init__.py      ...

之后進(jìn)入spiders目錄下輸入scrapy genspider 爬蟲名 域名,就會(huì)生成爬蟲文件douban.py文件,用于之后定義爬蟲的爬取邏輯和正則表達(dá)式等內(nèi)容

scrapy genspider douban movie.douban.com

3、定義數(shù)據(jù)

要爬取的豆瓣電影網(wǎng)址為 https://movie.douban.com/top250,其中的每個(gè)電影如下

我們要爬取其中的序號(hào)、名稱、介紹、星級(jí)、評(píng)論數(shù)、描述這幾個(gè)關(guān)鍵信息,因此需要在管道文件items.py中先定義這幾個(gè)對(duì)象,類似于ORM,通過(guò)scrapy.Field()方法為每個(gè)字段定義一個(gè)數(shù)據(jù)類型

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 庐江县| 岳普湖县| 临夏市| 榆树市| 桃源县| 遂溪县| 桐城市| 韩城市| 襄垣县| 淅川县| 历史| 昆山市| 无为县| 大埔区| 三河市| 赣榆县| 桐城市| 泸州市| 蓬溪县| 佛冈县| 七台河市| 芷江| 寻乌县| 南江县| 彩票| 朝阳区| 阜宁县| 辽阳县| 五河县| 甘孜县| 广河县| 平南县| 朔州市| 策勒县| 富宁县| 灵宝市| 百色市| 云安县| 从化市| 石渠县| 来宾市|