小編給大家分享一下python爬蟲(chóng)框架scrap的使用方法,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
從網(wǎng)站建設(shè)到定制行業(yè)解決方案,為提供網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站服務(wù)體系,各種行業(yè)企業(yè)客戶提供網(wǎng)站建設(shè)解決方案,助力業(yè)務(wù)快速發(fā)展。成都創(chuàng)新互聯(lián)公司將不斷加快創(chuàng)新步伐,提供優(yōu)質(zhì)的建站服務(wù)。關(guān)于Scrapy 簡(jiǎn)介
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)目代碼。我們可直接使用如下命令來(lái)生成項(xiàng)目代碼
scrapy startproject v6_scrapy
第二步,編寫Spider
在sipders目錄中,添加我們的爬蟲(chóng)文件toutiao_spider.py,內(nèi)容如下:
# -*- coding:utf-8 -*- import scrapy class ToutiaoSpider(scrapy.Spider): name = 'toutiao' start_urls = [ '/tupian/20230522/ai ] 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)爬蟲(chóng):
scrapy crawl toutiao
第三步,定義item
scrapy 使用Item類來(lái)結(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中,沒(méi)有title關(guān)鍵字'%item)
以上是python爬蟲(chóng)框架scrap的使用方法的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!