<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>

          送書 | 教你爬取電影天堂數(shù)據(jù)

          共 4966字,需瀏覽 10分鐘

           ·

          2021-08-21 08:16


          大家好!我是啃書君

          我和朋友說:俗話說,閑來沒事干,不如斗地主,哎,我們不斗地主,就是玩~。那不斗地主,我們干點啥好捏~,不如看電影?!

          朋友說:那些新上映的好看的電影、電視劇和動漫,絕大部分都要錢,你這個糟老頭子壞得很,又想騙我充會員,借會員給你?。?!

          我說:哎呀,被你發(fā)現(xiàn)了,沒事,那我們?nèi)ル娪疤焯门离娪皵?shù)據(jù),到時候想看哪部就下載下來,慢慢看!

          爬取分析

          在爬取之前,分析爬取的邏輯和理清思路。

          我們要爬取的數(shù)據(jù)是電影天堂首頁里面的全部電影信息,例如電影海報、電影名、上映時間、產(chǎn)地、字幕、片長、簡介、電影下載鏈接等電影信息。首先我們打開電影天堂,如下圖所示:

          打開開發(fā)者工具,我們發(fā)現(xiàn)每一個div class="co_content222"存放一個首頁的模塊,這個div class="co_content222"與之對應的模塊是2021必看熱片,我們打開其中的一個div,如下圖所示:

          我們發(fā)現(xiàn),里面有很多個li,每個li存放著電影名和電影頁面鏈接,我們點擊其中一個a鏈接并跳轉(zhuǎn)到該電影頁面,里面有我們需要的數(shù)據(jù)信息,例如:電影海報、電影名、上映時間、產(chǎn)地、字幕、片長、簡介,電影下載鏈接等,如下圖所示:

          我們繼續(xù)打開開發(fā)者工具,經(jīng)過簡單的查找,發(fā)現(xiàn)電影信息都存放在div id="Zoom"里面,如下圖所示:

          好了,我們已經(jīng)知道每個電影頁面鏈接和電影數(shù)據(jù)信息存放的位置了,接下來正式開始爬取。

          實戰(zhàn)演練

          電影天堂源代碼獲取

          首先我們定義了get_index()方法來獲取電影天堂首頁源代碼,具體代碼如下所示:

          def get_index():
              response = requests.get('https://www.dy2018.com/?jdfwkey=ycdpz3')
              response.encoding = 'gb2312'
              html = response.text
              get_link(html)

          這個電影天堂這個網(wǎng)站比較特別,不要加請求頭也可以正常獲取數(shù)據(jù)。

          這里要注意的是:

          電影天堂網(wǎng)頁的源代碼的head部分的編碼為:gb2312,所以我們利用requests庫來改變輸出結(jié)果的編碼。

          獲取頁面源代碼后,我們將源代碼傳遞到get_link()方法中。

          電影URL鏈接獲取

          在上一步中,我們已經(jīng)獲取到了頁面源代碼,接下來我們要獲取每個電影的URL鏈接,具體代碼如下圖所示:

          pattern1 = re.compile('2021必看熱片.*?<ul>(.*?)</ul>', re.S)
          ul = re.findall(pattern1, html)
          for i in ul:
              li = i.strip()
              pattern2 = re.compile("<li>.*?'(.*?)'.*?</li>")
              a = re.findall(pattern2, li)
              links = ['https://www.dy2018.com/' + ii for ii in a]
              for link in links:
                  get_data(link)

          首先我們?yōu)榱税凑帐醉摰拿總€模塊來獲取電影鏈接,所以我們創(chuàng)建了一個名為pattern1的正則表達式對象。因為整個頁面源代碼中,模塊名只出現(xiàn)了一次,例如2021必看熱片、迅雷電影資源等,所以我們可以通過這個來準確地獲取每個模塊的ul數(shù)據(jù)。由于獲取到的數(shù)據(jù)有換行符,所以我們需要使用strip()方法來清除開頭或是結(jié)尾的換行符。

          接下來我們創(chuàng)建了一個名為pattern2的正則表達式對象來獲取a鏈接里面的href,通過使用列表推導式,我們將每個電影的URL鏈接存放在列表中,然后將每個列表的元素傳遞到get_data()方法中。

          電影信息的獲取

          接下來,我們要利用我們已經(jīng)獲取到的電影URL鏈接來獲取電影信息,具體代碼如下:

          response = requests.get(link)
          response.encoding = 'gb2312'
          dats = response.text
          html = parsel.Selector(dats)
          pattern = re.compile(r'<!--Content Start-->.*?src="(.*?)".*?◎譯  名 (.*?)<br />.*?◎產(chǎn)  地 (.*?)<br />◎類  別 (.*?)<br />.*?◎字  幕 (.*?)<br />◎上映日期 (.*?)<br />.*?◎片  長 (.*?)<br />.*?◎簡  介<br />  (.*?)<', re.S)
          ul = re.findall(pattern, dats)
          for l in ul:
           down_list = html.xpath('//div[@id="downlist"]/table/tbody/tr/td//text()').extract()
              content = {
               'img': l[0],
                  'name': l[1],
                  'place': l[2],
                  'type': l[3],
                  'font': l[4],
                  'data': l[5],
                  'time': l[6],
                  'text': re.sub('&\w+;''', l[7]).replace('<br />''').strip(),
                  'download': down_list,
                  }
                  for i in content.values():
                      print(i)
          if __name__ == '__main__':
              get_index()

          由于div id='Zoom'中的電影數(shù)據(jù)信息中,電影圖片等數(shù)據(jù)只有一個,而電影下載鏈接可能有多個,例如電視劇的下載鏈接就有多個,我們?nèi)绻挥靡粋€正則表達式對象來獲取電視劇數(shù)據(jù)信息的話,只能獲取到一個下載鏈接,所以我們首先通過正則表達式來獲取電影圖片、電影名、產(chǎn)地、類型、字幕、上映時間、片長和簡介,接著使用xpath來獲取電視劇的下載鏈接。

          獲取完數(shù)據(jù)信息后,所有的數(shù)據(jù)放在字典中,并循環(huán)打印出來,運行結(jié)果如下:

          由于本人覺得這種打印出來的數(shù)據(jù)算是比較好看了,所以沒做進一步的數(shù)據(jù)保存,大家可以根據(jù)需要自行將這些數(shù)據(jù)存儲到其他地方。

          送書

          又到了每周三的送書時刻,今天給大家?guī)淼氖恰?span style="font-family: Arial, "microsoft yahei";font-size: 16px;font-weight: 700;letter-spacing: 0.544px;">Python網(wǎng)絡爬蟲框架Scrapy從入門到精通》,本書從python主流框架scrapy的簡介及網(wǎng)絡爬蟲知識講起,逐步深入到scrapy進階實戰(zhàn)。本書從實戰(zhàn)出發(fā),根據(jù)不同需求,有針對性地講解了靜態(tài)網(wǎng)頁、動態(tài)網(wǎng)頁、app應用是如何爬取所需數(shù)據(jù),以及scrapy是如何部署分布式爬取,還介紹了用scrapy+pandas是如何行數(shù)據(jù)分析及數(shù)據(jù)展示,讓讀者不但可以系統(tǒng)地學scrapy編程的相關知識,而且還能對scrapy應用開發(fā)有更為深入的理解。本書分為12章,涵蓋的主要內(nèi)容有scrapy框架簡介;scrapy網(wǎng)絡爬蟲知識介紹;scrapy開發(fā)環(huán)境的搭建;scrapy架構(gòu)及編程;scrapy階;實戰(zhàn)項目:scrapy靜態(tài)網(wǎng)頁的爬?。粚崙?zhàn)項目:scrapy動態(tài)網(wǎng)頁的爬??;實戰(zhàn)項目:scrapy爬取app應用數(shù)據(jù);scrapy的分布式部署與爬取;分布式的實戰(zhàn)項目;用selenium框架測試;用scrapy+pandas行數(shù)據(jù)分析。本書內(nèi)容通俗易懂,實例典型,實用性強,特別適合學python主流框架scrapy的入門讀者和階讀者閱讀,也適合數(shù)據(jù)分析與挖掘技術的初學者閱讀,還適合相關培訓機構(gòu)的師生閱讀。




          公眾號回復:送書 ,參與抽獎(共5本)

          點擊下方回復:送書  即可!




          大家如果有什么建議,歡迎掃一掃二維碼私聊小編~
          回復:加群 可加入Python技術交流群

             (點擊查看本書內(nèi)容)

          瀏覽 58
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

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

          手機掃一掃分享

          分享
          舉報
          <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>
                  芲井空αv无码一区二区三区 | 猫咪www成人免费网站无码 | 日韩无码毛片视频 | 国产色婷 | 亚洲黄页 |