Python 爬蟲闖關(第一關)
阿新 • • 發佈:2018-12-12
在學習爬蟲時,遇到了一個有意思的網站,這個網站設定了幾個關卡,需要經過爬蟲進行闖關,隨著關卡的網後,難度不斷增加,在闖關的過程中需要學習不同的知識,你的爬蟲水平也自然隨之提高。
按照提示,我們把數字放到位址列的後面,再次進行訪問:
發現,還要再用新的數字放在位址列進行訪問,我們可以猜測了,第一關是將頁面出現的數字填寫到當前 url 的尾部進行訪問,然後會得到一個新的數字,再用它替換 url 中的尾部數字,這樣不斷迴圈往復,直到頁面出現成功標識:
那麼思路也有了:
- 解析頁面中的數字;
- 將數字拼接成新的 URL;
- 訪問新的 URL,重複第 1 步;
- 直至頁面沒有數字可以解析到!
邏輯比較簡單,這裡我們直接上程式碼了:
BeautifulSoup 實現
# coding=utf-8 import requests, bs4, re url = 'http://www.heibanke.com/lesson/crawler_ex00/' while True: # download the page print("forward to page %s ..." % url) response = requests.get(url) print("the return code : " + str(response.status_code)) soup = bs4.BeautifulSoup(response.text, "html.parser") # 獲取頁面數字 comic = soup.select('h3') print(comic[0].getText()) number = re.findall("\d+", comic[0].getText()) if number == []: print('The end.') break; else: url = 'http://www.heibanke.com/lesson/crawler_ex00/' + number[0] # 拼接新地址
selenium 實現
# coding=utf-8 import requests, re from selenium import webdriver url = 'http://www.heibanke.com/lesson/crawler_ex00/' browser = webdriver.Firefox() while True: # download the page print("Forward to page %s ..." % url) browser.get(url) elem = browser.find_element_by_tag_name('h3') # get the url of the for the next page print(elem.text) number = re.findall("\d+", elem.text) if number == []: print('The end.') browser.quit() break; else: url = 'http://www.heibanke.com/lesson/crawler_ex00/' + number[0] # 拼接新地址
到這裡我們才能看到最終成功的頁面長這樣:
好了,第一關相對來說比較容易,下次我們來搞一下第二關,又興趣的可以自己先上手攻取下了~
如果覺得有用,歡迎關注我的微信,一起學習,共同進步,不定期推出贈書活動~
最近蒐集到慕課網視訊,視訊內容涵蓋 Python、Java、PHP、前端、小程式、演算法、架構、資料庫等等!關注本公眾號,後臺回覆「慕課網」即可獲取下載地址。