<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框架的微博評(píng)論爬蟲實(shí)戰(zhàn)

          共 3769字,需瀏覽 8分鐘

           ·

          2021-11-12 16:00

          大家好,我是菜鳥哥!

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


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


          01

          Scrapy簡(jiǎn)介


          首先,我們需要對(duì)Scrapy框架有一個(gè)簡(jiǎn)單的了解,不然在你書寫代碼的時(shí)候會(huì)非常的麻煩。


          01

          ?安裝


          使用pip對(duì)Scrapy進(jìn)行安裝,代碼如下:

          pip install scrapy


          02

          ?創(chuàng)建項(xiàng)目


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

          scrapy startproject weibo


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


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

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


          02

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


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


          01

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


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

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

          data = scrapy.Field()


          02

          ?編輯爬蟲


          接下來我們?cè)趕piders文件夾里面創(chuàng)建一個(gè)weibo.py爬蟲程序用以書寫請(qǐng)求的爬蟲代碼

          代碼如下:

          import scrapy
          class WeiboSpider(scrapy.Spider):
          name = 'weibo' #用于啟動(dòng)微博程序
          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對(duì)微博評(píng)論進(jìn)行爬蟲的朋友應(yīng)該知道,微博評(pí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ù)存儲(chǔ)


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

          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

          程序配置


          光寫上面的代碼是無法爬取到評(píng)論的,因?yàn)槲覀冞€沒有對(duì)整個(gè)程序進(jìn)行有效的配置,下面我們就在settings.py里面進(jìn)行配置。


          01

          ?不遵循robots協(xié)議


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

          # Obey robots.txt rules
          ROBOTSTXT_OBEY = False


          02

          ?使用自定義cookie


          我們知道,想要爬取微博評(píng)論,需要帶上自己的cookie用以信息校驗(yàn),因?yàn)槲覀兊腸ookie是在headers中包裹著的,所以我們需要將COOKIES_ENABLED改為False,代碼如下:

          # Disable cookies (enabled by default)
          COOKIES_ENABLED = False


          03

          ?打開管道


          想要進(jìn)行數(shù)據(jù)存儲(chǔ),還需要在配置中,打開通道,用以數(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

          啟動(dòng)程序


          我們?cè)趕piders同級(jí)的的目錄下創(chuàng)建一個(gè)wb_main.py文件,便于我們?cè)诰庉嬈髦袉?dòng)程序,代碼如下:

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


          05

          總結(jié)


          本文詳細(xì)的介紹了,如何用Scrapy框架來對(duì)微博評(píng)論進(jìn)行爬取,建議大家動(dòng)手實(shí)操一下,便于理解。本文僅供學(xué)習(xí)參考,不做它用。


          大廠大神來教大家玩服務(wù)器:
          安老師,某大廠互聯(lián)網(wǎng)公司的資深后端大神,有5年多的后端開發(fā)經(jīng)驗(yàn),教大家玩轉(zhuǎn)云服務(wù)器玩Linux,安裝Python,安裝數(shù)據(jù)庫,用Django+uwsigi+nginx web服務(wù)搭建網(wǎng)站,求職簡(jiǎn)歷網(wǎng)站搭建,寫腳本部署股票基金機(jī)器人,還可以搭建個(gè)人網(wǎng)盤!

          星球的價(jià)格是一年88元,然后現(xiàn)在雙11期間有優(yōu)惠券20元,相當(dāng)于是68一年,算下來每個(gè)月6塊錢,連半杯奶茶的錢都不到,一天才2毛錢,非常劃算。






          推薦閱讀:

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


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


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


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


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


          年度爆款文案

          瀏覽 46
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <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>
                  人人人人人人摸 | 无码上床观看 | 77777在线视频 | 国产精品爆乳露双乳呻吟 | 97国产成人无码精品久久久 |