小編給大家分享一下python爬蟲框架scrap的使用方法,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
成都創(chuàng)新互聯(lián)長期為上千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為西盟企業(yè)提供專業(yè)的網(wǎng)站建設(shè)、成都做網(wǎng)站,西盟網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
關(guān)于Scrapy 簡介
Scrapy是一個(gè)為了爬取網(wǎng)站數(shù)據(jù),提取結(jié)構(gòu)性數(shù)據(jù)而編寫的應(yīng)用框架。 可以應(yīng)用在包括數(shù)據(jù)挖掘,信息處理或存儲(chǔ)歷史數(shù)據(jù)等一系列的程序中。
安裝
在linux 和 Mac 系統(tǒng)下,可使用 pip安裝。
pip install scrapy
Windows上的安裝方式
conda install -c conda-forge scrapy
Scrapy 基本使用
第一步,創(chuàng)建項(xiàng)目
scrapy 提供了一些命令行工具,可直接生成項(xiàng)目代碼。我們可直接使用如下命令來生成項(xiàng)目代碼
scrapy startproject v6_scrapy
第二步,編寫Spider
在sipders目錄中,添加我們的爬蟲文件toutiao_spider.py,內(nèi)容如下:
# -*- coding:utf-8 -*- import scrapy class ToutiaoSpider(scrapy.Spider): name = 'toutiao' start_urls = [ 'https://toutiao.io/c/ai?page=1', ] def parse(self, response): """ 實(shí)現(xiàn)html解析 :param response: :return: """ papers = response.xpath('//a[@rel="external"]') for paper in papers: title = paper.xpath('./@title').extract()[0] href = 'https://toutiao.io%s' % paper.xpath('./@href').extract()[0] print(title, href)
在完成之后,執(zhí)行如下代碼啟動(dòng)爬蟲:
scrapy crawl toutiao
第三步,定義item
scrapy 使用Item類來結(jié)構(gòu)化數(shù)據(jù),以方便對(duì)數(shù)據(jù)的操作。
class ToutiaoItem(scrapy.Item): title = scrapy.Field() href = scrapy.Field()
第四步,構(gòu)建 Item pipeline 持久化到文件
我們看下如何將爬取到的數(shù)據(jù)保存到文件,代碼如下:
class V6ScrapyFilePipeline(object): def __init__(self): self.file = open('toutiao.json', 'wb') def process_item(self, item, spider): if item['title']: line = json.dumps(dict(item))+"\n" self.file.write(line.encode()) return item else: raise DropItem('在[%s]item中,沒有title關(guān)鍵字'%item)
以上是python爬蟲框架scrap的使用方法的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!