1 前言 作為爬蟲一員,掌握一門爬蟲框架是必備技能,因此作為一名小白的你,我想向你推薦『Scrapy』。 具體『Scrapy』是什么,作用這些就不啰嗦(都是廢話,百度有Scrapy簡(jiǎn)介),時(shí)間寶貴,就直接上干貨(實(shí)戰(zhàn)案例帶你體驗(yàn)scrapy的使用)。 下面會(huì)以『B站』為目標(biāo)進(jìn)行實(shí)戰(zhàn)! 2 Scrapy入門實(shí)戰(zhàn) 1.環(huán)境準(zhǔn)備安裝scrapypip install scrapy 通過上面這個(gè)命令即可直接安裝好scrapy庫 2.建立scrapy項(xiàng)目scrapy startproject Bili 通過上面這個(gè)命令可以建立一個(gè)項(xiàng)目名稱:Bili 的爬蟲項(xiàng)目。 這里就可以在桌面建立了一個(gè)名字為:Bili 的爬蟲項(xiàng)目 項(xiàng)目結(jié)構(gòu)Bili ├── Bili │ ├── __init__.py │ ├── items.py │ ├── middlewares.py │ ├── pipelines.py │ ├── __pycache__ │ ├── settings.py │ └── spiders │ ├── __init__.py │ └── __pycache__ └── scrapy.cfg 各個(gè)文件作用
3.明確爬取內(nèi)容https://search.bilibili.com/all?keyword=%E8%AF%BE%E7%A8%8B&page=2 以上面鏈接為例(B站),爬取視頻的標(biāo)題(title)和鏈接(url) 4.定義項(xiàng)目中每一個(gè)類Items類import scrapy
class BiliItem(scrapy.Item): # define the fields for your item here like: # name = scrapy.Field() #pass # 視頻標(biāo)題 title = scrapy.Field() # 鏈接 url = scrapy.Field()
定義spider類spider類作用是自定義網(wǎng)頁解析規(guī)則(新建scrapy項(xiàng)目是沒有的,需要自己新建)。 Scrapy 為創(chuàng)建 Spider 提供了 scrapy genspider 命令,該命令的語法格式如下: scrapy genspider [options] <name> <domain> 在命令行窗口中進(jìn)入 Bili 目錄下,然后執(zhí)行如下命令即可創(chuàng)建一個(gè) Spider: scrapy genspider lyc 'bilibili.com' 運(yùn)行上面命令,即可在 Bili 項(xiàng)目的 Bili /spider 目錄下找到一個(gè) lyc.py 文件
修改pipeline類這個(gè)類是對(duì)爬取的文件最后的處理,一般為負(fù)責(zé)將所爬取的數(shù)據(jù)寫入文件或數(shù)據(jù)庫中.。 from itemadapter import ItemAdapter
class BiliPipeline: def process_item(self, item, spider): print('title:', item['title']) print('url:', item['url'])
修改settings類
一個(gè) Scarpy項(xiàng)目的簡(jiǎn)單架構(gòu)就完成了我們可以運(yùn)行一下試試. 啟動(dòng)項(xiàng)目scrapy crawl lyc 但只有 一頁的內(nèi)容 , 我們可以解析下一頁 .
下一頁爬取 |
|