<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

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

          共 3596字,需瀏覽 8分鐘

           ·

          2021-12-11 05:30


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


          之前分享過一個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)建好后的項目結構,如下圖:


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

          spiders是存放爬蟲程序的文件夾,將寫好的爬蟲程序放到該文件夾中。items用來定義數(shù)據(jù),類似于字典的功能。settings是設置文件,包含爬蟲項目的設置信息。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

          ?遍歷爬取


          學過Requests對微博評論進行爬蟲的朋友應該知道,微博評論的URL構造方式,這里我直接展示構造代碼:

          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
          #導入cmdline模塊,可以實現(xiàn)控制終端命令行。
          cmdline.execute(['scrapy','crawl','weibo'])
          #用execute()方法,輸入運行scrapy的命令。


          05

          總結


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

          2. 本文僅供學習參考,不做它用。





          推薦閱讀:

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


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


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


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


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


          年度爆款文案


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

          瀏覽 52
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

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

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  色婷婷激情AV | 精品成人无码久久久久久 | 在线a久青草视频 | 性生活黄色视频 | 亚洲无码视 |