乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      【Scrapy】Scrapy學(xué)習(xí)(二)

       imelee 2017-02-28
      一. 命令行工具
      ● 幫助命令
      關(guān)于命令的幫助    scrapy <command> -h
      所有可用的命令    scrapy -h
      ● 命令分類
      全局命令:startproject, settings, runspider,  shell, fetch, view, version
      工程相關(guān)的命令: crawl, check, list, edit, parse, genspider, deploy,bench
      ● 具體命令說明
      ○ startproject:   scrapy startproject <project_name>  創(chuàng)建新的scrapy工程
      ○ genspider:   scrapy genspider [-t template] <name> <domain>  在當(dāng)前工程中創(chuàng)建新的爬蟲
      ○ crawl:    scrapy crawl <spider>  用爬蟲開始抓取
      ○ check: scrapy check [-l] <spider>  對比檢測
      ○ list: scrapy list  列出當(dāng)前工程中可用的爬蟲
      ○ edit: scrapy edit  用EDITOR設(shè)置中的編輯器編輯爬蟲
      ○ fetch: scrapy fetch <url>  用scrapy下載器下載指定url,將結(jié)果寫到標(biāo)準(zhǔn)輸出
      ○ view: scrapy view <url>  以scrapy爬蟲可以讀取的方式打開url
      ○ shell: scrapy shell <url> 啟動scrapy shell
      ○ parse: scrapy parse <url> [options]  獲取并解析指定url的內(nèi)容,支持的options有:
      ◎ --spider=SPIDER  強(qiáng)制使用指定爬蟲解析
      ◎ --a name=value  設(shè)置爬蟲參數(shù),可以重復(fù)
      ◎ --callback或-c  用spider函數(shù)作為回調(diào)來解析返回結(jié)果
      ◎ --pipelines  通過pipelines處理抓取條目
      ◎ --rules或-r  用爬蟲規(guī)則找對應(yīng)的回調(diào)來解析返回結(jié)果
      ◎ --noitems  不顯示抓取條目
      ◎ --nolinks  不顯示提取的鏈接
      ◎ --depth或-d  請求循環(huán)深度
      ◎ --verbose或-v  顯示每個(gè)深度的信息
      ○ settings: scrapy settings [options]  獲取scrapy配置中的值
      ○ runspider: scrapy runspider <spider_file.py>  不需要創(chuàng)建工程,運(yùn)行py文件中的爬蟲。
      ○ version: scrapy version [-v]  打印scrapy版本,帶參數(shù)-v會輸出python、twisted和平臺的信息。
      ○ deploy: scrapy deploy [ <target:project> | -l <target> | -L]  部署工程到scrapy服務(wù)器
      ○ bench: scrapy bench 運(yùn)行基準(zhǔn)測試程序
      ○ COMMANDS_MOUDLE  自定義命令
      二. 條目
              爬取的目的就是從非結(jié)構(gòu)的信息中獲得結(jié)構(gòu)化的數(shù)據(jù),Scrapy的Item就是實(shí)現(xiàn)該過程的。
      ● 聲明
      import scrapy
      class Product(scrapy.Item)
              name=scrapy.Field()
              ……
      ● 創(chuàng)建
      >>>product= Product(name='PC')
      ● 獲取字段值
      >>>product['name']
      ● 設(shè)置字段值
      >>>product['name']= 'App'
      ● 獲取所有值
      >>>product.items()
      ● 繼承
      class DiscountedProduct(product)
      discount_percent=scrapy.Field(serializer=str)
      ● Item對象
      scrapy.item.Item([arg])
      ● Field對象
      scrapy.item.Field([arg])
      三. 爬蟲
              爬蟲就是用戶定義的抓取和解析指定站點(diǎn)的地方,一般爬蟲的執(zhí)行流程如下:
      ① 生成初始請求抓取第一個(gè)url,當(dāng)獲得請求結(jié)果后調(diào)用指定的回調(diào)函數(shù)。
      ② 在回調(diào)函數(shù)中,解析返回結(jié)果,獲取Item對象或請求對象。解析得到的請求對象又包含回調(diào)方法,Scrapy循環(huán)執(zhí)行上述過程。
      ③ 在回調(diào)中,一般用Selectors(也可用BeautifulSoup或lxml等)解析到Items。
      ④ 最后,爬蟲返回的結(jié)果將被持久化到數(shù)據(jù)庫(用Item Pipeline)或文件(用Feed exports)。
      ● spider參數(shù)
      ○ scrapy crawl myspider -a category-electronics 命令行參數(shù)
      ○ 構(gòu)造函數(shù)中
      import scrapy
      class myspider(scrapy.Spider)
              name='myspider'
              def __init__(self, catagory=None, *args, **kwargs)
                      super(Myspider, self).__init__(*args, **kwargs)
                      ……
              下面介紹幾個(gè)scrapy自帶的spider:
      ● spider
              scrapy.sider.Spider是最簡單的Spider,其他爬蟲都繼承它。它只請求指定的start_urls或start_requests,在返回結(jié)果時(shí)調(diào)用parse方法。包括的屬性和方法有:
      ○ name  唯一標(biāo)識
      ○ allowed_domains  爬取的作用域列表
      ○ start_urls  開始爬取的url列表
      ○ srart_requests  返回爬蟲開始爬取的請求枚舉
      ○ make_requests_from_url(url)  將url轉(zhuǎn)化為請求
      ○ parse(response)  當(dāng)請求沒指定回調(diào)時(shí),獲得請求結(jié)果時(shí)調(diào)用的默認(rèn)回調(diào)函數(shù)
      ○ log(message, [level, component])  用scrapy.log.msg()記錄日志信息
      ○ closed(reason)  關(guān)閉爬蟲
      ● CrawlSpider
              scrapy.contrib.spiders.CrawlSpider抓取普通網(wǎng)站最常用的爬蟲,通過定義規(guī)則提供方便的跟蹤鏈接機(jī)制。除了繼承Spider的屬性外,它還有一個(gè)新的屬性rules,還暴露了一個(gè)可重寫的方法parse_start_url(response)。
      ○ Crawling rules
      scrapy.contrib.spiders.Rule(link_extractor, callback=None, cb_kwargs=None, follow=None, process_links=None, process_request=None)
      ◎ link_extractor是個(gè)Link Extractor,它定義了如何從每個(gè)爬取頁面中提取鏈接。
      ◎ callback在link_extractor提取鏈接后調(diào)用,它接收response作為參數(shù),必須返回包含Item和/或Request對象的列表。編寫爬取規(guī)則時(shí)避免使用parse作為回調(diào)函數(shù)。

        本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多