国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

爬蟲框架scrapy基本原理

這篇具有很好參考價(jià)值的文章主要介紹了爬蟲框架scrapy基本原理。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、scrapy介紹和快速使用

scrapy是python的爬蟲框架,類似于django(python的web框架)。

安裝:

  • Mac、Linux
    執(zhí)行pip3 install scrapy,不存在任何問題
  • Windows
    執(zhí)行pip3 install scrapy,如果安裝失敗,執(zhí)行下面步驟:
    (1)安裝wheel(為支持通過文件安裝軟件):pip3 install wheel(wheel官網(wǎng))
    (2)安裝lxml:pip3 install lxml
    (3)安裝pyopenssl:pip3 install pyopenssl
    (4)下載并安裝pywin32(pywin32官網(wǎng) 或 github地址)
    (5)下載twisted的wheel文件(twisted官網(wǎng)),執(zhí)行pip3 install 下載目錄\Twisted-17.9.0-cp36-cp36m-win_amd64.whl
    (6)最后執(zhí)行pip3 install scrapy

注:twisted是一個(gè)流行的事件驅(qū)動(dòng)的python網(wǎng)絡(luò)框架,性能很高的網(wǎng)絡(luò)框架。

使用:
1 使用命令行創(chuàng)建scrapy項(xiàng)目

scrapy startproject 項(xiàng)目名

2 創(chuàng)建爬蟲(相當(dāng)于django創(chuàng)建app)

scrapy genspider 爬蟲名 爬蟲地址

3 運(yùn)行爬蟲

scrapy crawl 爬蟲名

4 使用IDE打開爬蟲項(xiàng)目(項(xiàng)目根目錄)

5 目錄結(jié)構(gòu)

myfirst_crawl  # 項(xiàng)目名
    myfirst_crawl # 文件夾
        -spiders # 文件夾(所有的爬蟲都放在下面,一個(gè)py文件就是一個(gè)爬蟲)
        -cnblogs.py  # 爬蟲
    middlewares.py  # 以后中間件寫在這里
    pipelines.py  # 以后存數(shù)據(jù)
    settings.py  # 配置文件
    scrapy.cfg  # 項(xiàng)目部署相關(guān)
    items.py  # 相當(dāng)于models.py

二、scrapy框架原理

爬蟲框架scrapy基本原理,爬蟲,爬蟲,scrapy
五大組件
spider:爬蟲,我們寫代碼的地方,爬取網(wǎng)址和解析數(shù)據(jù)
engine:引擎,大總管,掌管數(shù)據(jù)的流向(我們不管)
scheduler:調(diào)度器,負(fù)責(zé)調(diào)度哪個(gè)地址先爬取,哪個(gè)后爬?。ㄉ疃葍?yōu)先,廣度優(yōu)先)
downloader:下載器,負(fù)責(zé)真正的下載(twisted,異步)
pipeline:管道,存儲(chǔ)數(shù)據(jù)的地方(文件,mysql、redis…)

兩大中間件
爬蟲中間件:爬蟲和引擎之間
下載中間件:引擎和下載器之間(用的多)

三、scrapy解析數(shù)據(jù)

1.執(zhí)行命令
直接敲這個(gè)名令:scrapy gensipder 名字 地址,等同于新建一個(gè)py文件
執(zhí)行爬蟲,不打印日志:scrapy crawl cnblogs --nolog

使用腳本運(yùn)行爬蟲:
項(xiàng)目根目錄下創(chuàng)建main.py

# 腳本執(zhí)行爬蟲,不用使用命令了
from scrapy.cmdline import execute
execute(['scrapy','crawl','cnblogs','--nolog'])

2.response對(duì)象的css方法和xpath方法
css中寫css選擇器,xpath中寫xpath選擇器

語法:
-xpath取文本內(nèi)容

'.//a[contains(@class,"link-title")]/text()'

-xpath取屬性

'.//a[contains(@class,"link-title")]/@href'

-css取文本

'a.link-title::text'

-css取屬性

'img.image-scale::attr(src)'

兩個(gè)方法:

.extract_first()  # 取一個(gè)
.extract()        # 取所有

spiders目錄下爬蟲文件參數(shù):

import scrapy
class CnblogsSpider(scrapy.Spider):
    name = 'cnblogs'   # 爬蟲名
    allowed_domains = ['www.cnblogs.com'] # 允許爬取的域
    start_urls = ['http://www.cnblogs.com/'] # 爬取的起始地址

    def parse(self, response):  # 響應(yīng)對(duì)象response,從中解析出想要的數(shù)據(jù)
        print('--------------',response)
        print(response.text)  # bs4解析

示例:
spiders目錄下的cnblogs.py文件文章來源地址http://www.zghlxwxcb.cn/news/detail-553413.html

import scrapy
class CnblogsSpider(scrapy.Spider):
    name = 'cnblogs'   # 爬蟲名
    allowed_domains = ['www.cnblogs.com'] # 允許爬取的域
    start_urls = ['http://www.cnblogs.com/'] # 爬取的起始地址

    def parse(self, response):  # 響應(yīng)對(duì)象response,從中解析出想要的數(shù)據(jù)
        # print('--------------',response)
        # print(response.text)  # bs4解析
        
        ############ css ###########
        # article_list=response.css('.post-item')  # 查出所有類名為post-item的標(biāo)簽,取多條
        # # print(len(article_list))
        # for article in article_list:
        #     title=article.css('div.post-item-text>a::text').extract_first()  # 取一條
        #     # article.css('section>div>a::text')
        #     href=article.css('div.post-item-text>a::attr(href)').extract_first()
        #     author=article.css('a.post-item-author>span::text').extract_first()
        #     desc=article.css('p.post-item-summary::text').extract_first()
        #
        #     # 取不到就是None
        #     photo=article.css('p.post-item-summary>a>img::attr(src)').extract_first()
        #
        #
        #     print(title)
        #     print(href)
        #     print(author)
        #     print(desc)
        #     print(photo)
        #     print('----------')

        ########### xpath ########### 
        article_list = response.xpath('//*[@class="post-item"]')  # 查出所有類名為post-item的標(biāo)簽,取多條
        # print(len(article_list))
        for article in article_list:
            # 注意:使用 . 從當(dāng)前標(biāo)簽下找
            title = article

到了這里,關(guān)于爬蟲框架scrapy基本原理的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【python爬蟲】14.Scrapy框架講解

    【python爬蟲】14.Scrapy框架講解

    前兩關(guān),我們學(xué)習(xí)了能提升爬蟲速度的進(jìn)階知識(shí)——協(xié)程,并且通過項(xiàng)目實(shí)操,將協(xié)程運(yùn)用于抓取薄荷網(wǎng)的食物數(shù)據(jù)。 可能你在體驗(yàn)開發(fā)一個(gè)爬蟲項(xiàng)目的完整流程時(shí),會(huì)有這樣的感覺:原來要完成一個(gè)完整的爬蟲程序需要做這么多瑣碎的工作。 比如,要導(dǎo)入不同功能的模塊

    2024年02月09日
    瀏覽(16)
  • 爬蟲——Scrapy框架 (初步學(xué)習(xí)+簡單案例)

    目錄 1.scrapy基本用途: 2.結(jié)構(gòu): 3.scrapy文件結(jié)構(gòu)(示例:game) 4.scrapy安裝 二、?簡單實(shí)例 1.創(chuàng)建項(xiàng)目(打開命令窗口) 2.打開項(xiàng)目? 一、Scrapy框架 1.scrapy基本用途: Scrapy是一個(gè)快速、高效率的網(wǎng)絡(luò)爬蟲框架,用于抓取web站點(diǎn)并從頁面中提取結(jié)構(gòu)化的數(shù)據(jù)。 Scrapy被廣泛用于數(shù)據(jù)

    2024年02月12日
    瀏覽(18)
  • 爬蟲框架有Scrapy、BeautifulSoup、Selenium

    爬蟲框架有Scrapy、BeautifulSoup、Selenium

    爬蟲框架有Scrapy、BeautifulSoup、Selenium BeautifulSoup比Scrapy相對(duì)容易學(xué)習(xí)。 Scrapy的擴(kuò)展,支持和社區(qū)比BeautifulSoup更大。 Scrapy應(yīng)被視為蜘蛛,而BeautifulSoup則是Parser。 1.爬蟲基礎(chǔ)知識(shí) 在開始Python爬蟲之前,需要先掌握一些基礎(chǔ)知識(shí)。首先了解一下HTTP協(xié)議,掌握常見的請(qǐng)求方法和狀

    2024年02月07日
    瀏覽(15)
  • 網(wǎng)絡(luò)爬蟲(Python:Selenium、Scrapy框架;爬蟲與反爬蟲筆記)

    網(wǎng)絡(luò)爬蟲(Python:Selenium、Scrapy框架;爬蟲與反爬蟲筆記)

    Selenium是一個(gè)模擬瀏覽器瀏覽網(wǎng)頁的工具,主要用于測(cè)試網(wǎng)站的自動(dòng)化測(cè)試工具。 Selenium需要安裝瀏覽器驅(qū)動(dòng),才能調(diào)用瀏覽器進(jìn)行自動(dòng)爬取或自動(dòng)化測(cè)試,常見的包括Chrome、Firefox、IE、PhantomJS等瀏覽器。 注意:驅(qū)動(dòng)下載解壓后,置于Python的安裝目錄下;然后將Python的安裝目

    2024年01月18日
    瀏覽(48)
  • 使用Scrapy框架集成Selenium實(shí)現(xiàn)高效爬蟲

    在網(wǎng)絡(luò)爬蟲的開發(fā)中,有時(shí)候我們需要處理一些JavaScript動(dòng)態(tài)生成的內(nèi)容或進(jìn)行一些復(fù)雜的操作,這時(shí)候傳統(tǒng)的基于請(qǐng)求和響應(yīng)的爬蟲框架就顯得力不從心了。為了解決這個(gè)問題,我們可以使用Scrapy框架集成Selenium來實(shí)現(xiàn)高效的爬蟲。 Scrapy是一個(gè)使用Python編寫的開源網(wǎng)絡(luò)爬蟲框

    2024年02月09日
    瀏覽(22)
  • python爬蟲之Scrapy框架--保存圖片(詳解)

    python爬蟲之Scrapy框架--保存圖片(詳解)

    目錄 Scrapy 使用ImagePipeline 保存圖片 使用圖片管道? 具體步驟 安裝相關(guān)的依賴庫 創(chuàng)建Scrapy項(xiàng)目 配置settings.py? ?定義Item ?編寫Spider 運(yùn)行Spider Scrapy 自定義ImagePipeline 自定義圖片管道 Scrapy提供了一個(gè) ImagePipeline ,用來下載圖片這條管道,圖片管道 ImagesPipeline ?提供了方便并具有

    2024年02月11日
    瀏覽(15)
  • Scrapy:Python中強(qiáng)大的網(wǎng)絡(luò)爬蟲框架

    Scrapy:Python中強(qiáng)大的網(wǎng)絡(luò)爬蟲框架

    在當(dāng)今信息爆炸的時(shí)代,從互聯(lián)網(wǎng)上獲取數(shù)據(jù)已經(jīng)成為許多應(yīng)用程序的核心需求。Scrapy是一款基于Python的強(qiáng)大網(wǎng)絡(luò)爬蟲框架,它提供了一種靈活且高效的方式來提取、處理和存儲(chǔ)互聯(lián)網(wǎng)上的數(shù)據(jù)。本文將介紹Scrapy的主要特性和優(yōu)勢(shì),以及如何使用它來構(gòu)建強(qiáng)大的網(wǎng)絡(luò)爬蟲。

    2024年02月19日
    瀏覽(23)
  • Python爬蟲——scrapy_工作原理

    Python爬蟲——scrapy_工作原理

    引擎向spiders要url 引擎把將要爬取的url給調(diào)度器 調(diào)度器會(huì)將url生成的請(qǐng)求對(duì)象放入到指定的隊(duì)列中 從隊(duì)列中出隊(duì)一個(gè)請(qǐng)求 引擎將請(qǐng)求交給下載器進(jìn)行處理 下載器發(fā)送請(qǐng)求獲取互聯(lián)網(wǎng)數(shù)據(jù) 下載器將數(shù)據(jù)返回給引擎 引擎將數(shù)據(jù)再次給到spiders spiders通過xpath解析該數(shù)據(jù),得到數(shù)據(jù)

    2024年02月12日
    瀏覽(24)
  • Scrapy爬蟲框架集成Selenium來解析動(dòng)態(tài)網(wǎng)頁

    Scrapy爬蟲框架集成Selenium來解析動(dòng)態(tài)網(wǎng)頁

    當(dāng)前網(wǎng)站普遍采用了javascript 動(dòng)態(tài)頁面,特別是vue與react的普及,使用scrapy框架定位動(dòng)態(tài)網(wǎng)頁元素十分困難,而selenium是最流行的瀏覽器自動(dòng)化工具,可以模擬瀏覽器來操作網(wǎng)頁,解析元素,執(zhí)行動(dòng)作,可以處理動(dòng)態(tài)網(wǎng)頁,使用selenium處理1個(gè)大型網(wǎng)站,速度很慢,而且非常耗資

    2024年02月15日
    瀏覽(22)
  • Python爬蟲開發(fā):Scrapy框架與Requests庫

    Python爬蟲開發(fā)中有兩個(gè)非常流行的工具:Scrapy框架和Requests庫。它們各自有自己的優(yōu)點(diǎn)和適用場(chǎng)景。 Scrapy Scrapy是一個(gè)為了爬取網(wǎng)站并提取結(jié)構(gòu)化數(shù)據(jù)而編寫的應(yīng)用框架,可以非常方便地實(shí)現(xiàn)網(wǎng)頁信息的抓取。Scrapy提供了多種可配置、可重用的組件,如調(diào)度器、下載器、爬蟲和

    2024年02月19日
    瀏覽(15)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包