1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        基于Scrapy框架的微博評論爬蟲實戰(zhàn)

        共 3596字,需瀏覽 8分鐘

         ·

        2021-12-11 05:30


        之前寫過的微博爬蟲是基于Requests的,今天來跟大家分享一下,基于Scrapy的微博爬蟲應(yīng)該怎么寫。


        之前分享過一個Requests對微博評論的爬蟲,已經(jīng)對頁面進行了全面的分析,本文主要注重對數(shù)據(jù)采集、存儲和文件配置進行分析講解。


        01

        Scrapy簡介


        首先,我們需要對Scrapy框架有一個簡單的了解,不然在你書寫代碼的時候會非常的麻煩。


        01

        ?安裝


        使用pip對Scrapy進行安裝,代碼如下:

        pip install scrapy


        02

        ?創(chuàng)建項目


        安裝好Scrapy框架之后,我們需要通過終端,來創(chuàng)建一個Scrapy項目,命令如下:

        scrapy startproject weibo


        創(chuàng)建好后的項目結(jié)構(gòu),如下圖:


        這里我們來簡單介紹一下結(jié)構(gòu)中我們用到的部分的作用,有助于我們后面書寫代碼。

        spiders是存放爬蟲程序的文件夾,將寫好的爬蟲程序放到該文件夾中。items用來定義數(shù)據(jù),類似于字典的功能。settings是設(shè)置文件,包含爬蟲項目的設(shè)置信息。pipelines用來對items中的數(shù)據(jù)進行進一步處理,如:清洗、存儲等。


        02

        數(shù)據(jù)采集


        經(jīng)過上面的簡單介紹,我們現(xiàn)在對Scrapy框架有了簡單的了解,下面我們開始寫數(shù)據(jù)采集部分的代碼。


        01

        ?定義數(shù)據(jù)


        首先,我們對數(shù)據(jù)存儲的網(wǎng)頁進行觀察,方便我們對獲取數(shù)據(jù)進行定義

        通過對網(wǎng)頁中數(shù)據(jù)存儲的形式進行觀察后,items.py中對數(shù)據(jù)的定義方式為:

        data = scrapy.Field()


        02

        ?編輯爬蟲


        接下來我們在spiders文件夾里面創(chuàng)建一個weibo.py爬蟲程序用以書寫請求的爬蟲代碼

        代碼如下:

        import scrapy
        class WeiboSpider(scrapy.Spider):
        name = 'weibo' #用于啟動微博程序
        allowed_domains = ['m.weibo.cn'] #定義爬蟲爬取網(wǎng)站的域名
        start_urls = ['https://m.weibo.cn/comments/hotflow?id=4700480024348767&mid=4700480024348767&max_id_type=0'] #定義起始網(wǎng)頁的網(wǎng)址
        for i in res['data']['data']:
        weibo_item = WeiboItem()
        weibo_item['data'] = re.sub(r'<[^>]*>', '', i['text'])
        # start_url = ['https://m.weibo.cn/comments/hotflow?id=4700480024348767&mid=4700480024348767&'+str(max_id)+'&max_id_type=0']
        yield weibo_item #將數(shù)據(jù)回傳給items


        03

        ?遍歷爬取


        學(xué)過Requests對微博評論進行爬蟲的朋友應(yīng)該知道,微博評論的URL構(gòu)造方式,這里我直接展示構(gòu)造代碼:

        max_id_type = res['data']['max_id_type']
        if int(max_id_type) == 1:
        new_url = 'https://m.weibo.cn/comments/hotflow?id=4700480024348767&mid=4700480024348767&max_id=' + str(
        max_id) + '&max_id_type=1'
        else:
        new_url = 'https://m.weibo.cn/comments/hotflow?id=4700480024348767&mid=4700480024348767&max_id=' + str(
        max_id) + '&max_id_type=0'


        02

        數(shù)據(jù)存儲


        光爬取下來數(shù)據(jù)是不行的,我們還需要對數(shù)據(jù)進行存儲,這里我采用的是csv文件,來對評論數(shù)據(jù)進行存儲,代碼如下:

        class CsvItemExporterPipeline(object):
        def __init__(self):
        # 創(chuàng)建接收文件,初始化exporter屬性
        self.file = open('text.csv','ab')
        self.exporter = CsvItemExporter(self.file,fields_to_export=['data'])
        self.exporter.start_exporting()


        03

        程序配置


        光寫上面的代碼是無法爬取到評論的,因為我們還沒有對整個程序進行有效的配置,下面我們就在settings.py里面進行配置。


        01

        ?不遵循robots協(xié)議


        需要對robts協(xié)議的遵守進行修改,如果我們遵循網(wǎng)頁的robots協(xié)議的話,那無法進行爬取,代碼如下:

        # Obey robots.txt rules
        ROBOTSTXT_OBEY = False


        02

        ?使用自定義cookie


        我們知道,想要爬取微博評論,需要帶上自己的cookie用以信息校驗,因為我們的cookie是在headers中包裹著的,所以我們需要將COOKIES_ENABLED改為False,代碼如下:

        # Disable cookies (enabled by default)
        COOKIES_ENABLED = False


        03

        ?打開管道


        想要進行數(shù)據(jù)存儲,還需要在配置中,打開通道,用以數(shù)據(jù)傳輸,代碼如下:

        # Configure item pipelines
        # See https://docs.scrapy.org/en/latest/topics/item-pipeline.html
        ITEM_PIPELINES = {
        'weibo.pipelines.CsvItemExporterPipeline': 1,
        'weibo.pipelines.WeiboPipeline': 300,
        }


        04

        啟動程序


        我們在spiders同級的的目錄下創(chuàng)建一個wb_main.py文件,便于我們在編輯器中啟動程序,代碼如下:

        from scrapy import cmdline
        #導(dǎo)入cmdline模塊,可以實現(xiàn)控制終端命令行。
        cmdline.execute(['scrapy','crawl','weibo'])
        #用execute()方法,輸入運行scrapy的命令。


        05

        總結(jié)


        1. 本文詳細的介紹了,如何用Scrapy框架來對微博評論進行爬取,建議大家動手實操一下,便于理解。

        2. 本文僅供學(xué)習(xí)參考,不做它用。





        推薦閱讀:

        入門:?最全的零基礎(chǔ)學(xué)Python的問題? |?零基礎(chǔ)學(xué)了8個月的Python??|?實戰(zhàn)項目?|學(xué)Python就是這條捷徑


        干貨:爬取豆瓣短評,電影《后來的我們》?|?38年NBA最佳球員分析?|? ?從萬眾期待到口碑撲街!唐探3令人失望? |?笑看新倚天屠龍記?|?燈謎答題王?|用Python做個海量小姐姐素描圖?|碟中諜這么火,我用機器學(xué)習(xí)做個迷你推薦系統(tǒng)電影


        趣味:彈球游戲? |?九宮格? |?漂亮的花?|?兩百行Python《天天酷跑》游戲!


        AI:?會做詩的機器人?|?給圖片上色?|?預(yù)測收入?|?碟中諜這么火,我用機器學(xué)習(xí)做個迷你推薦系統(tǒng)電影


        小工具:?Pdf轉(zhuǎn)Word,輕松搞定表格和水印!?|?一鍵把html網(wǎng)頁保存為pdf!|??再見PDF提取收費!?|?用90行代碼打造最強PDF轉(zhuǎn)換器,word、PPT、excel、markdown、html一鍵轉(zhuǎn)換?|?制作一款釘釘?shù)蛢r機票提示器!?|60行代碼做了一個語音壁紙切換器天天看小姐姐!


        年度爆款文案


        點閱讀原文,看200個Python案例!

        瀏覽 52
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            午夜成人无码福利 | 成人无码区免费A片久久鸭 | 久久久久久久精 | 日韩中文字幕视频 | 日本三级在线观看中文字 | 久久人人爽人人爽人人片aV东京热 | 性欧美老妇视频 | 日韩三级成人 | 亚洲精品久久久蜜桃 | 熟妇的大黑骚逼浪视频 |