python爬虫-初步使用Scrapy分布式爬虫(爬取mcbbs整合包保存名称及主要mod),大爱MC
生活随笔
收集整理的這篇文章主要介紹了
python爬虫-初步使用Scrapy分布式爬虫(爬取mcbbs整合包保存名称及主要mod),大爱MC
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
- 首先介紹一下scrapy。
- Scrapy一個(gè)開源和協(xié)作的框架,是為了頁(yè)面抓取所設(shè)計(jì)的,使用它可以快速、簡(jiǎn)單、可擴(kuò)展(通過(guò)中間件)的方式從網(wǎng)站中提取所需的數(shù)據(jù)。
- 工作流程如下
- ?Scrapy Engine是scrapy的核心,負(fù)責(zé)數(shù)據(jù)流的管理。Spiders(爬蟲)發(fā)出Requests請(qǐng)求,請(qǐng)求經(jīng)由Scrapy Engine傳遞給Scheduler(調(diào)度器),Scheduler通過(guò)Downloader Middlewares(下載器中間件)傳遞Requests給Downloader(下載器),Downloader根據(jù)Requests從網(wǎng)絡(luò)上下載數(shù)據(jù),并給出結(jié)果Responses(這是爬取內(nèi)容的結(jié)果),隨后Downloader通過(guò)Spider Middlewares(爬蟲中間件)將Response交給Spiders分析,Spiders分析得到Items交給Item Pipeline(管道)。
- 這里的Spider和Item Pipeline根據(jù)用戶需求自行編寫。(中間件也可以自行編寫)
- 具體返回值設(shè)計(jì)可以參照官方中文文檔:http://scrapy-chs.readthedocs.io/zh_CN/0.24/intro/tutorial.html
?
?
- 圖片來(lái)自官方參考文檔。
- 本次測(cè)試為爬取mcbbs整合包模塊的帖子列表,并且獲取每個(gè)帖子的鏈接,訪問該鏈接頁(yè)面并且獲得主要內(nèi)容標(biāo)簽內(nèi)的文本,以“標(biāo)題? : 主要mod”存入txt文本文件。
- 創(chuàng)建項(xiàng)目,mcbbs。
- conda activate spider :激活一個(gè)python虛擬環(huán)境叫做spider,且spider這個(gè)虛擬環(huán)境目錄下已經(jīng)安裝了scrapy。如何創(chuàng)建虛擬解釋器環(huán)境,并且安裝scrapy參見我的博客 :https://blog.csdn.net/zhouchen1998/article/details/81382006
- 創(chuàng)建成功后在對(duì)應(yīng)位置生成項(xiàng)目文件夾,用pycharm打開,文件結(jié)構(gòu)如下:
- 其中PackSpider為自定義爬蟲。
- 1.首先,設(shè)置settings.py。
- 設(shè)置延時(shí)之類的,生成的文件里都有但是注釋了,改過(guò)來(lái)就OK。
?
- 2.完成Item書寫。
- 因?yàn)槲乙4嫣用Q和主要mod內(nèi)容,名稱獲取頁(yè)面元素就ok,但是主要mod則是通過(guò)獲得元素的鏈接進(jìn)入帖子獲取主要內(nèi)容,并且保存,所以item設(shè)計(jì)如下。
- items.py
?
import scrapyclass McbbsItem(scrapy.Item):# define the fields for your item here like:# name = scrapy.Field()link_url = scrapy.Field()dir_name = scrapy.Field()dir_content = scrapy.Field()- 3.寫你的爬蟲PackSpider.py(這里看清結(jié)構(gòu)和繼承)
- 自定義爬蟲必須繼承Spider
- 因?yàn)轫?xiàng)目簡(jiǎn)單,不詳細(xì)注釋了。
?
- 4.完成pipelines.py,數(shù)據(jù)落地。
- 5.注意,如果你用的pycharm來(lái)項(xiàng)目編輯,那么必須給一個(gè)入口模塊。同時(shí)scrapy是異步的爬取順序不是輸入順序。
- main.py
- 其中mc_pack就是spider里面定義的name。
- ?運(yùn)行結(jié)果
總結(jié)
以上是生活随笔為你收集整理的python爬虫-初步使用Scrapy分布式爬虫(爬取mcbbs整合包保存名称及主要mod),大爱MC的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python爬虫-利用代理ip访问网页(
- 下一篇: websocket python爬虫_p