成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

scrapy學(xué)習(xí)筆記(二):連續(xù)抓取與數(shù)據(jù)保存

ShevaKuilin / 2792人閱讀

摘要:運(yùn)行一下我們的代碼,然后刷新下數(shù)據(jù)庫,可看到數(shù)據(jù)已經(jīng)保存到中了查看數(shù)據(jù)庫內(nèi)容很清晰,每一項(xiàng)都有保存

抓取論壇、貼吧這種多分頁的信息時(shí),沒接觸scrapy之前,是前確定有多少頁,使用for循環(huán)抓取。這方法略顯笨重,使用scrapy則可以直接組合下一頁的鏈接,然后傳給request持續(xù)進(jìn)行抓取,一直到?jīng)]有下一頁鏈接為止。

還是以官方教程的網(wǎng)站為例子,先分析下元素:

可以看到下一頁的標(biāo)簽:

Next 

其中的href屬性值/page/2與www.quotes.toscrape.com組合起來就是下一頁的網(wǎng)址,同理第二頁next的href屬性值組合起來就是第三頁,因此只要我們判斷出是否有下一頁的關(guān)鍵字,就可以進(jìn)行持續(xù)抓取。

上代碼:

import scrapy

class myspider(scrapy.Spider):

# 設(shè)置爬蟲名稱
name = "get_quotes"

# 設(shè)置起始網(wǎng)址
start_urls = ["http://quotes.toscrape.com"]

def parse(self, response):

    #使用 css 選擇要素進(jìn)行抓取,如果喜歡用BeautifulSoup之類的也可以
    #先定位一整塊的quote,在這個(gè)網(wǎng)頁塊下進(jìn)行作者、名言,標(biāo)簽的抓取
    for quote in response.css(".quote"):
        yield {
            "author" : quote.css("small.author::text").extract_first(),
            "tags" : quote.css("div.tags a.tag::text").extract(),
            "content" : quote.css("span.text::text").extract_first()
        }

    # 使用xpath獲取next按鈕的href屬性值
    next_href = response.xpath("http://li[@class="next"]/a/@href").extract_first()
    # 判斷next_page的值是否存在
    if next_href is not None:

        # 如果下一頁屬性值存在,則通過urljoin函數(shù)組合下一頁的url:
        # www.quotes.toscrape.com/page/2
        next_page = response.urljoin(next_href)

        #回調(diào)parse處理下一頁的url
        yield scrapy.Request(next_page,callback=self.parse)
      

下面是處理結(jié)果:

可以看到一直抓取了10頁,此網(wǎng)站也只有10頁

整個(gè)網(wǎng)站的名人名言就全部抓取到了,是不是很方便

現(xiàn)在只是把抓取得到的只是打印到屏幕上,并沒有存儲(chǔ)起來,接下來我們使用Mongodb進(jìn)行存儲(chǔ),mongodb的優(yōu)點(diǎn)可自行g(shù)oogle,這里就不說了。從官網(wǎng)下載,參考官方安裝教程進(jìn)行配置安裝。

要使用Mongodb需要pymongo,直接pip install pymongo
先演示下直接存儲(chǔ),當(dāng)做Mongodb存儲(chǔ)例子,實(shí)際不推薦這么使用:

import scrapy

# 導(dǎo)入pymongo
import pymongo

class myspider(scrapy.Spider):

# 設(shè)置爬蟲名稱
name = "get_quotes"

# 設(shè)置起始網(wǎng)址
start_urls = ["http://quotes.toscrape.com"]

# 配置client,默認(rèn)地址localhost,端口27017
client = pymongo.MongoClient("localhost",27017)
# 創(chuàng)建一個(gè)數(shù)據(jù)庫,名稱store_quote
db_name = client["store_quotes"]
# 創(chuàng)建一個(gè)表
quotes_list = db_name["quotes"]

def parse(self, response):

    #使用 css 選擇要素進(jìn)行抓取,如果喜歡用BeautifulSoup之類的也可以
    #先定位一整塊的quote,在這個(gè)網(wǎng)頁塊下進(jìn)行作者、名言,標(biāo)簽的抓取
    for quote in response.css(".quote"):
        # 將頁面抓取的數(shù)據(jù)存入mongodb,使用insert
        yield self.quotes_list.insert({
            "author" : quote.css("small.author::text").extract_first(),
            "tags" : quote.css("div.tags a.tag::text").extract(),
            "content" : quote.css("span.text::text").extract_first()
        })

    # 使用xpath獲取next按鈕的href屬性值
    next_href = response.xpath("http://li[@class="next"]/a/@href").extract_first()
    # 判斷next_page的值是否存在
    if next_href is not None:

        # 如果下一頁屬性值存在,則通過urljoin函數(shù)組合下一頁的url:
        # www.quotes.toscrape.com/page/2
        next_page = response.urljoin(next_href)

        #回調(diào)parse處理下一頁的url
        yield scrapy.Request(next_page,callback=self.parse)

如果使用的是pycharm編輯器,有一個(gè)mongodb插件,可以方便的查看數(shù)據(jù)庫,Mongo plugin,在plugin里面添加

添加之后,重啟pycharm,可以在setting -> other setting里面看到Mongo Servers,點(diǎn)擊Mongo servers配置mongodb:


Label隨意填寫,server url已經(jīng)有默認(rèn),test一下,連接成功確認(rèn)即可,完成之后,可在pycharm左側(cè)看到插件mongo explorer,點(diǎn)擊展開可看到數(shù)據(jù)庫。

OK運(yùn)行一下我們的代碼,

scrapy crawl get_quotes

然后刷新下數(shù)據(jù)庫,可看到數(shù)據(jù)已經(jīng)保存到mongodb中了

查看數(shù)據(jù)庫內(nèi)容:

很清晰,每一項(xiàng)都有保存

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/38563.html

相關(guān)文章

  • scrapy學(xué)習(xí)筆記(三):使用itempipeline保存數(shù)據(jù)

    摘要:最近真是忙的吐血。。。上篇寫的是直接在爬蟲中使用,這樣不是很好,下使用才是正經(jīng)方法。 最近真是忙的吐血。。。 上篇寫的是直接在爬蟲中使用mongodb,這樣不是很好,scrapy下使用item才是正經(jīng)方法。在item中定義需要保存的內(nèi)容,然后在pipeline處理item,爬蟲流程就成了這樣: 抓取 --> 按item規(guī)則收集需要數(shù)據(jù) -->使用pipeline處理(存儲(chǔ)等) 定義it...

    13651657101 評論0 收藏0
  • 首次公開,整理12年積累的博客收藏夾,零距離展示《收藏夾吃灰》系列博客

    摘要:時(shí)間永遠(yuǎn)都過得那么快,一晃從年注冊,到現(xiàn)在已經(jīng)過去了年那些被我藏在收藏夾吃灰的文章,已經(jīng)太多了,是時(shí)候把他們整理一下了。那是因?yàn)槭詹貖A太亂,橡皮擦給設(shè)置私密了,不收拾不好看呀。 ...

    Harriet666 評論0 收藏0
  • 零基礎(chǔ)如何學(xué)爬蟲技術(shù)

    摘要:楚江數(shù)據(jù)是專業(yè)的互聯(lián)網(wǎng)數(shù)據(jù)技術(shù)服務(wù),現(xiàn)整理出零基礎(chǔ)如何學(xué)爬蟲技術(shù)以供學(xué)習(xí),。本文來源知乎作者路人甲鏈接楚江數(shù)據(jù)提供網(wǎng)站數(shù)據(jù)采集和爬蟲軟件定制開發(fā)服務(wù),服務(wù)范圍涵蓋社交網(wǎng)絡(luò)電子商務(wù)分類信息學(xué)術(shù)研究等。 楚江數(shù)據(jù)是專業(yè)的互聯(lián)網(wǎng)數(shù)據(jù)技術(shù)服務(wù),現(xiàn)整理出零基礎(chǔ)如何學(xué)爬蟲技術(shù)以供學(xué)習(xí),http://www.chujiangdata.com。 第一:Python爬蟲學(xué)習(xí)系列教程(來源于某博主:htt...

    KunMinX 評論0 收藏0
  • Python爬蟲筆記1-爬蟲背景了解

    摘要:學(xué)習(xí)爬蟲的背景了解。但是搜索引擎蜘蛛的爬行是被輸入了一定的規(guī)則的,它需要遵從一些命令或文件的內(nèi)容,如標(biāo)注為的鏈接,或者是協(xié)議。不同領(lǐng)域不同背景的用戶往往具有不同的檢索目的和需求,搜索引擎無法提供針對具體某個(gè)用戶的搜索結(jié)果。 學(xué)習(xí)python爬蟲的背景了解。 大數(shù)據(jù)時(shí)代數(shù)據(jù)獲取方式 如今,人類社會(huì)已經(jīng)進(jìn)入了大數(shù)據(jù)時(shí)代,數(shù)據(jù)已經(jīng)成為必不可少的部分,可見數(shù)據(jù)的獲取非常重要,而數(shù)據(jù)的獲取的方式...

    oujie 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<