真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

python爬蟲利器scrapy怎么使用

本文小編為大家詳細(xì)介紹“python爬蟲利器scrapy怎么使用”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“python爬蟲利器scrapy怎么使用”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識吧。

為江西等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及江西網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、江西網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!

架構(gòu)及簡介

Scrapy是用純Python實(shí)現(xiàn)一個(gè)為了爬取網(wǎng)站數(shù)據(jù)、提取結(jié)構(gòu)性數(shù)據(jù)而編寫的應(yīng)用框架,用途非常廣泛。

Scrapy 使用了 Twisted(其主要對手是Tornado)異步網(wǎng)絡(luò)框架來處理網(wǎng)絡(luò)通訊,可以加快我們的下載速度,不用自己去實(shí)現(xiàn)異步框架,并且包含了各種中間件接口,可以靈活的完成各種需求。

python爬蟲利器scrapy怎么使用

Scrapy Engine(引擎): 負(fù)責(zé)Spider、ItemPipeline、Downloader、Scheduler中間的通訊,信號、數(shù)據(jù)傳遞等。

Scheduler(調(diào)度器): 它負(fù)責(zé)接受引擎發(fā)送過來的Request請求,并按照一定的方式進(jìn)行整理排列,入隊(duì),當(dāng)引擎需要時(shí),交還給引擎。

Downloader(下載器):負(fù)責(zé)下載Scrapy Engine(引擎)發(fā)送的所有Requests請求,并將其獲取到的Responses交還給Scrapy Engine(引擎),由引擎交給Spider來處理,

Spider(爬蟲):它負(fù)責(zé)處理所有Responses,從中分析提取數(shù)據(jù),獲取Item字段需要的數(shù)據(jù),并將需要跟進(jìn)的URL提交給引擎,再次進(jìn)入Scheduler(調(diào)度器),

Item Pipeline(管道):它負(fù)責(zé)處理Spider中獲取到的Item,并進(jìn)行進(jìn)行后期處理(詳細(xì)分析、過濾、存儲(chǔ)等)的地方.

Downloader Middlewares(下載中間件):你可以當(dāng)作是一個(gè)可以自定義擴(kuò)展下載功能的組件。

Spider Middlewares(Spider中間件):你可以理解為是一個(gè)可以自定擴(kuò)展和操作引擎和Spider中間通信的功能組件(比如進(jìn)入Spider的Responses;和從Spider出去的Requests)

開發(fā)流程

開發(fā)一個(gè)簡單爬蟲步驟:

  • 新建項(xiàng)目

scrapy startproject demo
  • 編寫spider

    • 種子url (請求)

    • 解析方法

  • 編寫item
    結(jié)果數(shù)據(jù)模型

  • 持久化
    編寫pipelines

生成目錄介紹

scrapy.cfg :項(xiàng)目的配置文件

mySpider/ :項(xiàng)目的Python模塊,將會(huì)從這里引用代碼

mySpider/items.py :項(xiàng)目的目標(biāo)文件

mySpider/pipelines.py :項(xiàng)目的管道文件

mySpider/settings.py :項(xiàng)目的設(shè)置文件

mySpider/spiders/ :存儲(chǔ)爬蟲代碼目錄

使用命令創(chuàng)建爬蟲類

scrapy genspider gitee "gitee.com"

解析

通常我們解析都會(huì)涉及到 xpath csspath 正則,有的時(shí)候可能還有jsonpath(python中json訪問基本不用使用復(fù)雜的jsonpath,字典訪問就可以)
scrapy 內(nèi)置xpath和csspath支持

Selector

而解析器本身也可以單獨(dú)使用

  • xpath()

  • extract_first()

  • extract() #返回一個(gè)列表

  • 索引訪問,因?yàn)閟crapy.selector.unified.SelectorList繼承l(wèi)ist,可以通過索引訪問

from scrapy import Selector

if __name__ == '__main__':
    body = """


    
    Title


    

hello

    

hello

"""     s = Selector(text=body)     title=s.xpath("http://title/text()").extract_first();#抽取     print(title)     #Title     pe = s.xpath("http://p")     print(s.xpath("http://p").extract())     #['

hello

', '

hello

']     print(pe)     #[hello

'>, hello

'>]     print(type(pe))     #     print(type(pe[0]))  #通過索引訪問     #     print(type(pe.pop()))     #     p=s.xpath("http://p").extract_first()     print(p)
  • css()
    css選擇器我們::text選擇內(nèi)容,用::attr() 選擇屬性

print(s.css("title").extract_first())
print(s.css("title::text").extract_first())
print(s.css("title::text").extract())
print(s.css("p.big::text").extract_first())
print(s.css("p.big::attr(class)").extract_first())


# Title
# Title
# ['Title']
# hello big
# big
  • css()和xpath()混用
    scrapy.selector.unified.SelectorList scrapy.selector.unified.Selector 本身有css和xpath方法,所以可以組合使用

print(s.xpath("http://body").css("p.big").extract_first())
print(s.css("body").xpath("http://p[@class='big']").extract_first())

# 

hello big 

hello big 

  • re()和re_first()
    scrapy.selector.unified.SelectorList scrapy.selector.unified.Selector 擁有 re()方法,支持通過正則來過濾

print(s.xpath("http://p/text()").re_first("big"))
print(type(s.xpath("http://p/text()").re("big")))

# big
# 

** 但re()返回列表,.re_first返回str,所以不能再繼續(xù)調(diào)用其他的選擇方法

在爬蟲中使用解析器

response對象已經(jīng)

class GiteeSpider(scrapy.Spider):
    name = 'gitee'
    allowed_domains = ['gitee.com']
    start_urls = ['https://gitee.com/haimama']

    def parse(self, response):
        print(type(response))
        t=response.xpath("http://title/text()").extract_first()
        print(t)

##啟動(dòng)爬蟲執(zhí)行后的結(jié)果
# 執(zhí)行結(jié)果省略日志
# 
# 碼馬 (haimama) - Gitee

response對象類型為 scrapy.http.response.html.HtmlResponse,該類繼承TextResponse 。擁有xpath()和css()方法如下

所以response 可以直接使用前文中的Selector 的方式來解析

    def xpath(self, query, **kwargs):
        return self.selector.xpath(query, **kwargs)

    def css(self, query):
        return self.selector.css(query)

配置文件

settings.py是爬蟲的配置文件,要正常啟動(dòng)爬蟲的話,一定注意將robo協(xié)議限制 修改為 ROBOTSTXT_OBEY = False
其他相關(guān)配置,我們下節(jié)再介紹

啟動(dòng)爬蟲

在爬蟲目錄編寫run.py方法,添加如下腳本,這樣就可以直接執(zhí)行爬蟲了。如果命令行執(zhí)行的話scrapy crawl gitee。其中g(shù)itee為爬蟲名,對應(yīng)GiteeSpider中的name字段

# coding: utf-8

from scrapy import cmdline
if __name__ == '__main__':
    cmdline.execute("scrapy crawl gitee".split())

# scrapy crawl gitee

讀到這里,這篇“python爬蟲利器scrapy怎么使用”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點(diǎn)還需要大家自己動(dòng)手實(shí)踐使用過才能領(lǐng)會(huì),如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


新聞標(biāo)題:python爬蟲利器scrapy怎么使用
網(wǎng)頁路徑:http://weahome.cn/article/ijgodh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部