小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

【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>  對(duì)比檢測(cè)
○ 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> 啟動(dòng)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ī)則找對(duì)應(yīng)的回調(diào)來解析返回結(jié)果
◎ --noitems  不顯示抓取條目
◎ --nolinks  不顯示提取的鏈接
◎ --depth或-d  請(qǐng)求循環(huán)深度
◎ --verbose或-v  顯示每個(gè)深度的信息
○ settings: scrapy settings [options]  獲取scrapy配置中的值
○ runspider: scrapy runspider <spider_file.py>  不需要?jiǎng)?chuàng)建工程,運(yùn)行py文件中的爬蟲。
○ version: scrapy version [-v]  打印scrapy版本,帶參數(shù)-v會(huì)輸出python、twisted和平臺(tái)的信息。
○ deploy: scrapy deploy [ <target:project> | -l <target> | -L]  部署工程到scrapy服務(wù)器
○ bench: scrapy bench 運(yùn)行基準(zhǔn)測(cè)試程序
○ 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對(duì)象
scrapy.item.Item([arg])
● Field對(duì)象
scrapy.item.Field([arg])
三. 爬蟲
        爬蟲就是用戶定義的抓取和解析指定站點(diǎn)的地方,一般爬蟲的執(zhí)行流程如下:
① 生成初始請(qǐng)求抓取第一個(gè)url,當(dāng)獲得請(qǐng)求結(jié)果后調(diào)用指定的回調(diào)函數(shù)。
② 在回調(diào)函數(shù)中,解析返回結(jié)果,獲取Item對(duì)象或請(qǐng)求對(duì)象。解析得到的請(qǐng)求對(duì)象又包含回調(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,其他爬蟲都繼承它。它只請(qǐng)求指定的start_urls或start_requests,在返回結(jié)果時(shí)調(diào)用parse方法。包括的屬性和方法有:
○ name  唯一標(biāo)識(shí)
○ allowed_domains  爬取的作用域列表
○ start_urls  開始爬取的url列表
○ srart_requests  返回爬蟲開始爬取的請(qǐng)求枚舉
○ make_requests_from_url(url)  將url轉(zhuǎn)化為請(qǐng)求
○ parse(response)  當(dāng)請(qǐng)求沒指定回調(diào)時(shí),獲得請(qǐng)求結(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對(duì)象的列表。編寫爬取規(guī)則時(shí)避免使用parse作為回調(diào)函數(shù)。

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

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多