「原創」「python自學筆記」python爬蟲之騰訊動漫

本篇是python自學的第一個里程碑,如python自學第一篇的計劃,完成一個簡單的爬蟲。

爬蟲說是簡單,但是用一門正在學習的語言實現起來還是廢了點勁。

本人比較喜歡漫畫所以第一個目標就是爬點漫畫來看看,第一個目標就選擇了一個漫畫站。從週二開始,到今天週四,花了快8個小時攢出了一個能動的爬蟲,爬取一個連接的漫畫。下面就來說說這裡的心路歷程。

先給大家看看選中的漫畫目標,隨機選的,不喜勿噴

「原創」「python自學筆記」python爬蟲之騰訊動漫

爬取這個頁面的時候,還是非常輕鬆的,主要使用了requests和beautifulSoup,輕輕鬆鬆就抓取到了標題和開始閱讀的正文url。

title=bs.find('h2',class_='works-intro-title')

...

relative_url=bs.find('a',class_='works-intro-view')['href']

但是進入正文的url後,就傻眼了,怎麼也獲取不到圖片的

  • 標籤,這是怎麼回事呢,於是打印出beautifulSoup的內容看了一下才知道,原來漫畫的主體部分都是js動態加載的,抓出來的都是代碼而不是真正的html標籤。

    於是開始了搜索解決方案,最後選擇了selenium+chromedriver的方式來加載整個頁面。

    selenium直接使用pip安裝,chromedriver請在下面地址下載

    http://npm.taobao.org/mirrors/chromedriver/

    請按照你的chrome瀏覽器的版本進行下載,下載的chromedriver解壓到python.exe所在的文件夾。(這個應該是可以配置路徑的,但我是一個初學者,請原諒我的愚笨,我還沒有學到這個)。

    這個時候再讀取

  • 就已經可以讀取到了
    ul=bs.find('ul',class_='comic-contain')
    lis=ul.findAll('li')
    For li in lis:
    img_class="lazy" src="//p2.ttnews.xyz/loading.gif" data-original=li.img['src']

    但是下載了兩個圖片後,突然就報錯了,再次debug整個beautifulsoup才發現,圖片都是懶加載的,為了響應速度,前臺也是想盡了辦法。

    這時,我的第一個想法是把查找下一個圖片的js方法找到,但是打開瀏覽器的network一看,每一個圖片是直接請求的,而不是通過統一的接口請求的

    「原創」「python自學筆記」python爬蟲之騰訊動漫

    而且在所有加載的js資源中搜索了一圈也沒有查到圖片的相關操作(有點笨),所以就採用了暴力的方法,使用selenium+js模擬向下滾動

    For step in range(50,100000,50):
    js="varq=document.getElementById('mainView').scrollTop="+str(step)
    driver.execute_script(js)

    終於,所有圖片在暴力下拉下,全部加載了,之後的下載也簡單多了。

    詳細代碼請見:

    https://gitee.com/dean2083/python-learning

    day3

    堅持總會有收穫。


  • 分享到:


    相關文章: