scrapy框架的簡(jiǎn)單介紹-創(chuàng)新互聯(lián)

這篇文章主要介紹“scrapy框架的簡(jiǎn)單介紹”,在日常操作中,相信很多人在scrapy框架的簡(jiǎn)單介紹問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”scrapy框架的簡(jiǎn)單介紹”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

創(chuàng)新互聯(lián)于2013年成立,先為城關(guān)等服務(wù)建站,城關(guān)等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢(xún)服務(wù)。為城關(guān)企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。

1.Scrapy五大基本構(gòu)成

  • Scrapy框架主要由五大組件組成,分別是調(diào)度器(Scheduler)、下載器(Downloader)、爬蟲(chóng)(Spider)和實(shí)體管道(Item Pipeline)、Scrapy引擎(Scrapy Engine);

  • 調(diào)度器:可以假設(shè)成一個(gè)URL的優(yōu)先隊(duì)列,由它來(lái)決定下一個(gè)要抓取的網(wǎng)址是什么,同時(shí)去除重復(fù)的網(wǎng)址;

  • 下載器:是所有組件中負(fù)擔(dān)大的,用于高速地下載網(wǎng)絡(luò)上的資源;

  • 爬蟲(chóng):是用戶(hù)最關(guān)心的部份,用戶(hù)定制自己的爬蟲(chóng),用于從特定的網(wǎng)頁(yè)中提取自己需要的信息,也可以從中提取出鏈接,讓Scrapy繼續(xù)抓取下一個(gè)頁(yè)面;

  • 實(shí)體管道:用于處理爬蟲(chóng)提取的實(shí)體,要的功能是持久化實(shí)體、驗(yàn)證實(shí)體的有效性、清除不需要的信息;

  • Scrapy引擎:是整個(gè)框架的核心,用來(lái)控制調(diào)試器、下載器、爬蟲(chóng),實(shí)際上引擎相當(dāng)于計(jì)算機(jī)的CPU,控制著整個(gè)流程;

2.使用scrapy框架爬取網(wǎng)頁(yè)數(shù)據(jù)

  • 第一步:首先要使用scrapy框架需要先安裝它,可以使用pip安裝scrapy框架,注意如果在Windows系統(tǒng)下直接使用pip命令行安裝可能會(huì)報(bào)錯(cuò),這時(shí)需要手動(dòng)安裝幾個(gè)依賴(lài)庫(kù)如wheel、lxml、Twisted、pywin32等,報(bào)錯(cuò)信息會(huì)提示你缺少哪個(gè)庫(kù)。
    這里提一下Twisted插件的安裝,它的下載地址為: https://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted , 進(jìn)入后找到twisted,選擇下載對(duì)應(yīng)的版本,其中cp表示python版本,下載完成后進(jìn)入終端,輸入pip install Twisted-19.2.0-cp37-cp37m-win_amd64.whl,這里注意你下載的是哪個(gè)版本就輸入哪個(gè)版本的文件名,安裝完成后再輸入pip install scrapy就能成功安裝scrapy框架了;

  • 第二步:創(chuàng)建爬蟲(chóng)項(xiàng)目,創(chuàng)建儲(chǔ)存 scrapy 文件夾scrapy_python,然后在命令行工具中cd進(jìn)入這個(gè)項(xiàng)目路徑,用 scrapy startproject  名稱(chēng)命令新建項(xiàng)目;

scrapy框架的簡(jiǎn)單介紹

這樣我們就成功的創(chuàng)建了一個(gè)scrapy項(xiàng)目,我們?cè)赑yCharm中看看

scrapy框架的簡(jiǎn)單介紹

  • 第三步:可以在剛剛創(chuàng)建的項(xiàng)目的spiders文件夾中創(chuàng)建一個(gè)蜘蛛文件,用于爬取網(wǎng)頁(yè)數(shù)據(jù)的,我們?cè)囍廊∫幌耤sdn網(wǎng)站,那么新建蜘蛛的命令行是:scrapy genspider csdn www.csdn.net,其中csdn是你創(chuàng)建的蜘蛛的文件名,而www.csdn.net表示爬取的目標(biāo)網(wǎng)址的域名,你想爬取哪個(gè)網(wǎng)站就使用哪個(gè)網(wǎng)站的域名。

  • 第四步:如果要啟動(dòng)我們創(chuàng)建的蜘蛛文件,我們可以使用命令行:scrapy crawl csdn,這里的csdn是蜘蛛文件中name的對(duì)應(yīng)值;

scrapy框架的簡(jiǎn)單介紹

  • 第五步:想要測(cè)試爬去數(shù)據(jù)是否成功,我們可以在項(xiàng)目的模板中創(chuàng)建一個(gè)測(cè)試文件,如:start_spider.py,然后通過(guò)debug來(lái)進(jìn)行項(xiàng)目調(diào)試,可以輸出我們想要爬取的網(wǎng)頁(yè)數(shù)據(jù);

from scrapy.cmdline import execute
execute(["scrapy", "crawl", "csdn",])
  • 第六步:爬取數(shù)據(jù)時(shí)需要遵循爬蟲(chóng)協(xié)議,它用來(lái)限定爬蟲(chóng)程序可以爬取的內(nèi)容范圍,位于scrapy 項(xiàng)目的 settings.py文件中默認(rèn) ROBOTSTXT_OBEY = True,即遵守此協(xié)議,當(dāng)我們想要爬取的內(nèi)容不符合該協(xié)議但仍要爬取時(shí),可以設(shè)置 ROBOTSTXT_OBEY = False,表示不遵守此協(xié)議;

  • 第七步:這樣我們就可以開(kāi)始使用Xpath選擇器或者CSS選擇器來(lái)解析想要爬取的頁(yè)面數(shù)據(jù)了;

3.Xpath選擇器的介紹

  • XPath的全稱(chēng)是XML Path Language,即XML路徑語(yǔ)言,它是一種在結(jié)構(gòu)化文檔中定位信息的語(yǔ)言,XPath使用路徑表達(dá)式來(lái)選取XML文檔中的節(jié)點(diǎn)或節(jié)點(diǎn)集。節(jié)點(diǎn)是通過(guò)沿著路徑 (path) 或者步 (steps) 來(lái)選取的;

  • 謂語(yǔ)用來(lái)查找某個(gè)特定的節(jié)點(diǎn)或者包含某個(gè)指定的值的節(jié)點(diǎn),謂語(yǔ)嵌在方括號(hào)中,比如//body//a[1]表示選取屬于body 子元素的第一個(gè) a 元素,//a[ @href ]表示選取所有擁有名為 href 的屬性的 a 元素等;

  • 除了索引、屬性外,Xpath還可以使用便捷的函數(shù)來(lái)增強(qiáng)定位的準(zhǔn)確性,如contains(s1,s2)表示如果s1中包含s2則返回true,反之返回false、text()表示獲取節(jié)點(diǎn)中的文本內(nèi)容、starts-with()表示從起始位置匹配字符串;

  • 使用XPath選取節(jié)點(diǎn)的常用語(yǔ)法有

表達(dá)式書(shū)寫(xiě)方式表達(dá)式意義
*選擇HTML頁(yè)面中任意的節(jié)點(diǎn)
/從根節(jié)點(diǎn)選取
//從匹配選擇的當(dāng)前節(jié)點(diǎn)選擇文檔中的節(jié)點(diǎn),而不考慮它們的位置
.選取當(dāng)前節(jié)點(diǎn)
..選取當(dāng)前節(jié)點(diǎn)的父節(jié)點(diǎn)
/bookstore/book[1]選取屬于 bookstore 子元素的第一個(gè) book 元素
/bookstore/book[last()]選取屬于 bookstore 子元素的最后一個(gè) book 元素
/bookstore/book[last()-1]選取屬于 bookstore 子元素的倒數(shù)第二個(gè) book 元素
//title[ @lang ]選取所有擁有名為 lang 的屬性的 title 元素
//title[ @lang =’eng’]選取所有 title 元素,且這些元素?fù)碛兄禐?eng 的 lang 屬性
/bookstore/book[price>35.00]選取 bookstore 元素的所有 book 元素,且其中的 price 元素的值須大于 35.00
/bookstore/book[price>35.00]/title選取 bookstore 元素中的 book 元素的所有 title 元素,且其中的 price 元素的值須大于 35.00
//*選取文檔中的所有元素
//title[@*]選取所有帶有屬性的 title 元素
//book/title , //book/price選取 book 元素的所有 title 和 price 元素
//title , //price選取文檔中的所有 title 和 price 元素
child::book選取所有屬于當(dāng)前節(jié)點(diǎn)的子元素的 book 節(jié)點(diǎn)
child::text()選取當(dāng)前節(jié)點(diǎn)的所有文本子節(jié)點(diǎn)
/bookstore/book/title選取所有 title 節(jié)點(diǎn)
/bookstore/book/price/text()選取 price 節(jié)點(diǎn)中的所有文本
//*任意元素

使用XPath

我們來(lái)通過(guò)XPath選擇器爬取網(wǎng)站中我們想要爬取的信息,如下圖我們來(lái)爬去今日推薦中的標(biāo)題
scrapy框架的簡(jiǎn)單介紹

import scrapy
class CsdnSpider(scrapy.Spider):
    name = 'csdn'
    allowed_domains = ['www.csdn.net']
    start_urls = ['http://www.csdn.net/']
    def parse(self, response):
       # 選擇所有class="company_name"的h4元素下的a元素的文本 
       result = response.xpath('//h4[@class="company_name"]/a/text()').extract()
       # 將得到的文本列表循環(huán) 
       for i in result:
           print(i)

我們來(lái)看一下輸出打印,看看是不是我們想要的結(jié)果

scrapy框架的簡(jiǎn)單介紹

到此,關(guān)于“scrapy框架的簡(jiǎn)單介紹”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!

新聞名稱(chēng):scrapy框架的簡(jiǎn)單介紹-創(chuàng)新互聯(lián)
地址分享:http://muchs.cn/article40/cdideo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化、網(wǎng)站改版、云服務(wù)器品牌網(wǎng)站制作、定制網(wǎng)站域名注冊(cè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)