爬蟲(chóng)實(shí)戰(zhàn)——爬取大麥網(wǎng)

前兩天國(guó)慶睹限,朋友在看中國(guó)好聲音,出于對(duì)周杰倫以及李健的喜愛(ài)拾弃,朋友想去鳥(niǎo)巢看10月7號(hào)的巔峰之夜值桩,于是...我上了大麥網(wǎng)查看票價(jià),但是出于職業(yè)病豪椿,不小心就按下了F12颠毙,就有了這個(gè)項(xiàng)目

言歸正傳,爬取大麥網(wǎng)

經(jīng)過(guò)反復(fù)點(diǎn)擊發(fā)現(xiàn)砂碉,大麥網(wǎng)在經(jīng)過(guò)多次點(diǎn)擊之后蛀蜜,會(huì)出現(xiàn)需要登錄的情況,因此增蹭,通過(guò)這點(diǎn)分析滴某,我們需要登錄的cookie

老套路,直接上代碼

不愿意看代碼的,可以直接跳過(guò)霎奢,看最后的總結(jié)

import requests
import json
import csv


class Spider(object):
    # 構(gòu)造請(qǐng)求頭等
    def __init__(self):
        self.url = "https://search.damai.cn/searchajax.html"
        self.headers = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36",
            "cookie": "_uab_collina=153898386691021526720657; _umdata=70CF403AFFD707DFEB6BA57C56CA3B13E7BD5DAF561D420C384FF4DA75A62F56B2225CEC1DD4846FCD43AD3E795C914C46F57A339EDEC74F7006D0CE8CD77F14; x5sec=7b226d65632d67756964652d7765623b32223a226639303431366238343735643836656338393965393365656533303433646662434f3669374e3046454b2f666a7476302f7244356a41453d227d; cna=b0mIEx9fXWcCAQ6CznyYZjAe; cookie2=18204ab51d2bd14a7326dab901c58057; t=37103c62b8274bb5769837840f8b71a8; _tb_token_=36ed1e7aee13e; x_hm_tuid=PN4CfOch3fJ1yW4MpI+z3hZhs9u9ODTzpfGE7AtbNvax7kg+GG7r3wFIj/ihN/iG; _hvn_login=18; csg=6be6a003; munb=4199098224; damai.cn_nickName=MeisterLee; damai.cn_user=gz4HkAnuV3BDKOniG3I4tVZ2WybxgALVJu0CZ2Xkbi57+SBwd++X2SrBbVRAeGWUGxb2+Rjuqig=; damai.cn_user_new=gz4HkAnuV3BDKOniG3I4tVZ2WybxgALVJu0CZ2Xkbi57%2BSBwd%2B%2BX2SrBbVRAeGWUGxb2%2BRjuqig%3D; h5token=9ccd095300bc4588a090b771e8418b2b_1_1; damai_cn_user=gz4HkAnuV3BDKOniG3I4tVZ2WybxgALVJu0CZ2Xkbi57%2BSBwd%2B%2BX2SrBbVRAeGWUGxb2%2BRjuqig%3D; loginkey=9ccd095300bc4588a090b771e8418b2b_1_1; user_id=116768239; isg=BNfX8KBwQJVhx8QVBH4OF8nuZksr4qxma9qAKCkEQKYNWPSaMO1Azkg-vr5isIP2",
            "referer": "https://search.damai.cn/search.htm?ctl=%20%20%20&order=1&cty="
        }
        self.data = {
            "cty": "北京",
            "ctl": "演唱會(huì)",
            "tsg": "0",
            "order": "1"
        }
        self.data_key = None
        # 構(gòu)造IP代理(按需求開(kāi)啟)
        # proxies = {
        #     "http": "http://47.93.56.0:3128",
        #     "http": "http://39.135.24.12:80",
        # }

    # 請(qǐng)求url獲取響應(yīng)
    def get(self):
        response = requests.post(url=self.url, headers=self.headers, data=self.data)
        # 測(cè)試
        # print(response.text)
        return response

    # 解析數(shù)據(jù)
    def parse(self):
        # 將字符串?dāng)?shù)據(jù)轉(zhuǎn)換成字典數(shù)據(jù)
        dict_data = json.loads(self.get().text)

        # 測(cè)試字典數(shù)據(jù)是否能解析出來(lái)
        # print(dict_data["pageData"]["resultData"])

        # 將需要的爬取的字典數(shù)據(jù)存儲(chǔ)在變量中
        need_spider_data = dict_data["pageData"]["resultData"]
        # print(need_spider_data)
        # 構(gòu)造存儲(chǔ)頭列表,第一種方法
        data_key = []
        for item in need_spider_data[0]:
            data_key.append(item)

        # 打印測(cè)試
        # print(data_key)
        self.data_key = data_key

        # # 第二種方法
        # data_keys = need_spider_data[0].keys()
        #
        # # 打印測(cè)試
        # print(data_keys)
        return need_spider_data

    # 保存為CSV數(shù)據(jù)
    def save(self):
        # 構(gòu)建屬性列表
        # list = ['actors', 'categoryname', 'cityname', 'description', 'price', 'pricehigh', 'showstatus', 'showtime', 'subcategoryname', 'venue', 'venuecity', 'verticalPic']
        list = self.data_key

        # 此處出現(xiàn)保存户誓,報(bào)錯(cuò)為缺少字段,因此追加一個(gè)字段
        list.append('favourable')
        # 測(cè)試list
        print(list)

        # 數(shù)據(jù)
        my_data = self.parse()
        # 測(cè)試
        print(my_data)

        with open("damaiwang" + ".csv", "w", newline="", encoding='utf8') as f:
            # 傳入頭數(shù)據(jù)幕侠,即第一行數(shù)據(jù)
            writer = csv.DictWriter(f, list)
            writer.writeheader()
            for row in my_data:
                writer.writerow(row)


    # # 保存為字典數(shù)據(jù)
    # def save_dict(self):
    #     with open("damaiwang", 'w', encoding='utf8') as f:
    #         f.write(str(self.parse()))




if __name__ == '__main__':
    spider = Spider()
    # spider.run()
    spider.parse()
    spider.save()

在代碼中我做了相應(yīng)的注釋?zhuān)a還可以繼續(xù)優(yōu)化帝美,這里使用的cookie是我自己登錄之后的cookie,代碼在使用過(guò)程中晤硕,需要換成自己的cookie

遇到的問(wèn)題總結(jié)
  • 這個(gè)爬蟲(chóng)相對(duì)來(lái)說(shuō)悼潭,是最基礎(chǔ)也是最簡(jiǎn)單的,但是難點(diǎn)在于舞箍,如果要對(duì)數(shù)據(jù)做數(shù)據(jù)分析舰褪,就大概率的得把數(shù)據(jù)轉(zhuǎn)化成CSV格式的文件進(jìn)行保存,雖然在公司中并不是這么操作(一般直接存進(jìn)數(shù)據(jù)庫(kù)),對(duì)于個(gè)人項(xiàng)目來(lái)說(shuō)疏橄,存成本地的CSV格式的文件就必不可少了占拍。

  • 保存成CSV格式的文件有很多辦法,首先捎迫,最愚蠢(大智若愚)的辦法就是遍歷數(shù)據(jù)晃酒,把數(shù)據(jù)用逗號(hào)隔開(kāi),這種辦法雖然看起來(lái)非常愚蠢窄绒,但是贝次,我不得不給一個(gè)中肯的評(píng)價(jià),有時(shí)候颗祝,在數(shù)據(jù)雜亂無(wú)章的時(shí)候,這是唯一的解決辦法(實(shí)話說(shuō)恼布,網(wǎng)上有很多辦法解決格式轉(zhuǎn)化問(wèn)題螺戳,但數(shù)據(jù)是千奇百怪的,我們很難預(yù)知我們爬取到的數(shù)據(jù)長(zhǎng)什么樣子)折汞,這也是我目前還在探索的一個(gè)知識(shí)點(diǎn)倔幼,畢竟寫(xiě)程序最重要的還是解決問(wèn)題,代碼不能提高人工的生產(chǎn)率爽待,要程序何用损同?

  • 言歸正傳,這里我調(diào)用了Python的內(nèi)置庫(kù)——CSV鸟款,感興趣的伙伴可以上網(wǎng)查看一下這個(gè)庫(kù)的其他用法膏燃,這里我個(gè)人覺(jué)得能解決一時(shí)的問(wèn)題,但終歸不是一個(gè)長(zhǎng)久之計(jì)

over~ peace~

個(gè)人博客地址:www.limiao.tech

公眾號(hào):TechBoard

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末何什,一起剝皮案震驚了整個(gè)濱河市组哩,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖伶贰,帶你破解...
    沈念sama閱讀 212,599評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蛛砰,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡黍衙,警方通過(guò)查閱死者的電腦和手機(jī)泥畅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,629評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)琅翻,“玉大人位仁,你說(shuō)我怎么就攤上這事⊥” “怎么了障癌?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,084評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)辩尊。 經(jīng)常有香客問(wèn)我涛浙,道長(zhǎng),這世上最難降的妖魔是什么摄欲? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,708評(píng)論 1 284
  • 正文 為了忘掉前任轿亮,我火速辦了婚禮,結(jié)果婚禮上胸墙,老公的妹妹穿的比我還像新娘我注。我一直安慰自己,他們只是感情好迟隅,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,813評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布但骨。 她就那樣靜靜地躺著掌挚,像睡著了一般嫌术。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上氮块,一...
    開(kāi)封第一講書(shū)人閱讀 50,021評(píng)論 1 291
  • 那天吼野,我揣著相機(jī)與錄音校哎,去河邊找鬼。 笑死瞳步,一個(gè)胖子當(dāng)著我的面吹牛闷哆,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播单起,決...
    沈念sama閱讀 39,120評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼抱怔,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了嘀倒?” 一聲冷哼從身側(cè)響起野蝇,我...
    開(kāi)封第一講書(shū)人閱讀 37,866評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤讼稚,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后绕沈,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體锐想,經(jīng)...
    沈念sama閱讀 44,308評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,633評(píng)論 2 327
  • 正文 我和宋清朗相戀三年乍狐,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了赠摇。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,768評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡浅蚪,死狀恐怖藕帜,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情惜傲,我是刑警寧澤洽故,帶...
    沈念sama閱讀 34,461評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站盗誊,受9級(jí)特大地震影響时甚,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜哈踱,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,094評(píng)論 3 317
  • 文/蒙蒙 一荒适、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧开镣,春花似錦刀诬、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,850評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至树埠,卻和暖如春糠馆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背弥奸。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,082評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工榨惠, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留奋早,地道東北人盛霎。 一個(gè)月前我還...
    沈念sama閱讀 46,571評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像耽装,于是被迫代替她去往敵國(guó)和親愤炸。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,666評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容

  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 31,914評(píng)論 2 89
  • 用兩張圖告訴你掉奄,為什么你的 App 會(huì)卡頓? - Android - 掘金 Cover 有什么料规个? 從這篇文章中你...
    hw1212閱讀 12,704評(píng)論 2 59
  • 有的人喜歡把卡片當(dāng)作收藏知識(shí)的工具凤薛,而我則喜歡把卡片當(dāng)作創(chuàng)造作品的工具。 如何用卡片生成自己的知識(shí)樹(shù)诞仓?如何分享自己...
    陳素封閱讀 799評(píng)論 3 21
  • day1 今天看了原則的序言缤苫、目錄、導(dǎo)言墅拭、結(jié)語(yǔ)和附錄活玲。本書(shū)由3部分組成:作者達(dá)利歐的經(jīng)歷、生活原則和工作原則谍婉。通過(guò)...
    蟲(chóng)子09閱讀 318評(píng)論 1 1
  • 今天是十五天舒憾,我發(fā)現(xiàn)自己越陷越深了。穗熬。
    過(guò)高易折閱讀 77評(píng)論 0 0