本篇是python自學的第一個里程碑,如python自學第一篇的計劃,完成一個簡單的爬蟲。
爬蟲說是簡單,但是用一門正在學習的語言實現起來還是廢了點勁。
本人比較喜歡漫畫所以第一個目標就是爬點漫畫來看看,第一個目標就選擇了一個漫畫站。從週二開始,到今天週四,花了快8個小時攢出了一個能動的爬蟲,爬取一個連接的漫畫。下面就來說說這裡的心路歷程。
先給大家看看選中的漫畫目標,隨機選的,不喜勿噴
爬取這個頁面的時候,還是非常輕鬆的,主要使用了requests和beautifulSoup,輕輕鬆鬆就抓取到了標題和開始閱讀的正文url。
title=bs.find('h2',class_='works-intro-title')
...
relative_url=bs.find('a',class_='works-intro-view')['href']
但是進入正文的url後,就傻眼了,怎麼也獲取不到圖片的
於是開始了搜索解決方案,最後選擇了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一看,每一個圖片是直接請求的,而不是通過統一的接口請求的
而且在所有加載的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
堅持總會有收穫。
閱讀更多 塵埃中的清風 的文章