Scrapy 爬取豆瓣音樂Top250(學習筆記)

最近自學了Python中有關爬蟲的相關內容悯姊。同時吠架,看到網上有很多關于網頁抓取的文章锋喜,特別想實際操作一下。這篇文章是在借鑒[圖文詳解]scrapy安裝與真的快速上手----爬取豆瓣9分榜單的基礎上完成的棒搜。那么接下來就讓我們回到正題疹蛉,使用Scrapy進行爬取。

爬取的網址:豆瓣音樂Top250

爬取內容:
爬取內容:歌名力麸、歌手名可款、發(fā)行日期、曲風克蚂、評分

對爬取的內容進行解析:

打開網頁后按F12闺鲸,同時刷新剛打開的網頁,出現(xiàn)網頁解析器
點擊右上圖的小指針后點擊網頁上內容在解析器中顯示對應的代碼位置埃叭;另外點擊任意如下方的鏈接會得到User_Agent的信息

該步驟得到的信息對后續(xù)爬取有用(一般該信息只需要獲取一次翠拣,下次可以重復使用)

按照圖中步驟定位到單條信息爬取的整體區(qū)域

展開上圖中定位到的代碼,并對位到需要獲取信息是位置

根據(jù)定位到的代碼可以書寫xpath或正則表達式

  • 爬取的大范圍
'//div[@class="pl2"]'     #//表示爬取標簽下所有內容
  • 歌名
'a/text()'
  • 歌手名游盲、發(fā)行時間误墓、曲風
'<p class="pl">(.*?)/'   #因為這些信息連在一起多以可以考慮先集體爬取之后再用對信息進行分列
  • 評分
'div[@class="star clearfix"]/span[@class="rating_nums"]/text()'

進行以上分析后我們現(xiàn)在正式進入Scrapy中進行編程

建立爬蟲項目和爬蟲文件

1.快捷鍵Ctrl+R打開cmd 通過cd命令定位到工作環(huán)境(后期的文件都保存在該路徑下)
2.建立爬蟲項目 在cmd中輸入scrapy startproject 爬蟲項目名 ,本文建立的爬蟲項目名為doubanmusic益缎。

scrapy startproject doubanmusic

3.建立爬蟲文件 在cmd中先定位到步驟2建立的爬蟲項目(例:cd doubanmusic),之后建立爬蟲文件 scrapy genspider -t basic 文件名 域名
(例:scrapy genspider -t basic main douban.com)
4.打開python編輯器谜慌,打開settings.py文件,使用快捷鍵Ctrl+F查找到USER_AGENT的位置


引號內的內容為之前定位到的use_Agent信息

5.打開main.py先爬取第一頁的內容莺奔,進行測試

import scrapy
import re

class MainSpider(scrapy.Spider):
    name = 'main'
    allowed_domains = ['douban.com']
    start_urls = ('https://music.douban.com/top250',)   #start_urls需要具體定位到第一頁具體的網址欣范,注意后面有一個逗號

    def parse(self, response):
       selector = scrapy.Selector(response)
       music = selector.xpath('//div[@class="pl2"]')
       for each in music:
           names = each.xpath('a/text()').extract()[0]
           names = names.replace(' ','').replace('\n','')#為了使后面的輸出更友好,剛開始練習時可以不加這一條看看前后效果
           grade = each.xpath('div[@class="star clearfix"]/span[@class="rating_nums"]/text()').extract()[0]
           infor = each.xpath('p[@class="pl"]/text()').extract()[0]
           print("歌曲名: "+names)
           print("綜合信息 :"+infor)
           print("曲風 "+music_style)
           print("評分 :"+grade)
           print("-----------------------------------------------------------")

6.打開cmd進行測試 輸入scrapy crawl 爬蟲文件名(例:scrapy crawl main)


終端輸出的結果

代碼測試正常令哟,因此可以開啟多頁爬取并將爬取內容保存到csv文件中
7.打開items.py文件定義需要保存的字段

import scrapy

class DoubanmusicItem(scrapy.Item):
    # define the fields for your item here like:
    # name = scrapy.Field()
    names = scrapy.Field()
    info = scrapy.Field()
    grade = scrapy.Field()

8.再次打開main.py恼琼,編寫代碼

import scrapy
import re
from doubanmusic.items import DoubanmusicItem   #新增內容

class MainSpider(scrapy.Spider):
    name = 'main'
    allowed_domains = ['douban.com']
    start_urls = ('https://music.douban.com/top250',)

    def parse(self, response):
       item = DoubanmusicItem()  #新增內容
       selector = scrapy.Selector(response)
       music = selector.xpath('//div[@class="pl2"]')
       for each in music:
           names = each.xpath('a/text()').extract()[0]
           names = names.replace(' ','').replace('\n','')
           grade = each.xpath('div[@class="star clearfix"]/span[@class="rating_nums"]/text()').extract()[0]
           info = each.xpath('p[@class="pl"]/text()').extract()[0]
           item['names'] = names
           item['grade'] = grade
           item['info'] = info
           yield item  #新增內容
           #print("歌曲名: " + names)
           #print("綜合信息: " + info)
           #print("評分: " + grade)
           #print("-----------------------------------------------------------")
           next_page =   selector.xpath('//span[@class="next"]/link/@href').extract()#以下均為新增內容
           if next_page: #實現(xiàn)翻頁,直到最后一頁為止
               next = next_page[0]
               print(next)
               yield scrapy.http.Request(next,callback=self.parse)

翻頁處的xpath來自下圖


定位xpath

8.打開settings.py屏富,創(chuàng)建數(shù)據(jù)爬取的保存的位置


u'file:///E://doubanmusic.csv(具體路徑可以自行設置)

9.在cmd中運行 scrapy crawl main 打開路徑下的doubanmusic 發(fā)現(xiàn)是亂碼晴竞。修正方法:可以右鍵選擇以記事本的形式打開,發(fā)現(xiàn)不是亂碼狠半。然后另存為csv格式(注意編碼為UTF-8)噩死。再次打開時沒有亂碼。
注意文件名后加.csv神年,編碼選擇UTF-8

10.可以利用CSV中的分列功能將info字段中的內容在/處進行分隔已维。

ps:現(xiàn)在還是一個爬蟲小白,什么都在摸索和借鑒中已日,上文可能有很多不足之處垛耳,歡迎大家指正。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末飘千,一起剝皮案震驚了整個濱河市堂鲜,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌占婉,老刑警劉巖泡嘴,帶你破解...
    沈念sama閱讀 211,817評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異逆济,居然都是意外死亡酌予,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評論 3 385
  • 文/潘曉璐 我一進店門奖慌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來抛虫,“玉大人,你說我怎么就攤上這事简僧〗ㄒ” “怎么了?”我有些...
    開封第一講書人閱讀 157,354評論 0 348
  • 文/不壞的土叔 我叫張陵岛马,是天一觀的道長棉姐。 經常有香客問我屠列,道長,這世上最難降的妖魔是什么伞矩? 我笑而不...
    開封第一講書人閱讀 56,498評論 1 284
  • 正文 為了忘掉前任笛洛,我火速辦了婚禮,結果婚禮上乃坤,老公的妹妹穿的比我還像新娘苛让。我一直安慰自己,他們只是感情好湿诊,可當我...
    茶點故事閱讀 65,600評論 6 386
  • 文/花漫 我一把揭開白布狱杰。 她就那樣靜靜地躺著,像睡著了一般厅须。 火紅的嫁衣襯著肌膚如雪仿畸。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,829評論 1 290
  • 那天九杂,我揣著相機與錄音颁湖,去河邊找鬼。 笑死例隆,一個胖子當著我的面吹牛甥捺,可吹牛的內容都是我干的。 我是一名探鬼主播镀层,決...
    沈念sama閱讀 38,979評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼镰禾,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了唱逢?” 一聲冷哼從身側響起吴侦,我...
    開封第一講書人閱讀 37,722評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎坞古,沒想到半個月后备韧,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 44,189評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡痪枫,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,519評論 2 327
  • 正文 我和宋清朗相戀三年织堂,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片奶陈。...
    茶點故事閱讀 38,654評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡易阳,死狀恐怖,靈堂內的尸體忽然破棺而出吃粒,到底是詐尸還是另有隱情潦俺,我是刑警寧澤,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站事示,受9級特大地震影響早像,放射性物質發(fā)生泄漏。R本人自食惡果不足惜很魂,卻給世界環(huán)境...
    茶點故事閱讀 39,940評論 3 313
  • 文/蒙蒙 一扎酷、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧遏匆,春花似錦、人聲如沸谁榜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽窃植。三九已至帝蒿,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間巷怜,已是汗流浹背葛超。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留延塑,地道東北人绣张。 一個月前我還...
    沈念sama閱讀 46,382評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像关带,于是被迫代替她去往敵國和親侥涵。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,543評論 2 349

推薦閱讀更多精彩內容

  • 這兩天摸索了下scrapy宋雏,剛看文檔的時候覺得有點生無可戀芜飘,scrapy框架個人還是覺得比較難懂的,需要學習的地方...
    Treehl閱讀 5,627評論 7 10
  • scrapy學習筆記(有示例版) 我的博客 scrapy學習筆記1.使用scrapy1.1創(chuàng)建工程1.2創(chuàng)建爬蟲模...
    陳思煜閱讀 12,670評論 4 46
  • 序言第1章 Scrapy介紹第2章 理解HTML和XPath第3章 爬蟲基礎第4章 從Scrapy到移動應用第5章...
    SeanCheney閱讀 15,050評論 13 61
  • 2017.10.26 號磨总,張小妹最近感冒了嗦明,今天有點小咳嗽,每每她感冒我的心總是七上八下蚪燕。晚上跟她爸爸出去吃的...
    愛孩子閱讀 184評論 0 0
  • 剛剛關了電腦娶牌,洗了臉,爬上沙發(fā)邻薯,準備睡覺裙戏!可終歸是準備,還是想懺悔些什么厕诡,比如累榜,房間雜亂無章,畫沒畫好,答應幫朋友...
    墨妍閣閱讀 204評論 0 0