“最簡單”的爬蟲開發方法
背景:
本人接觸python爬蟲也有一段時間了,期間也有許多小夥伴和我探討python爬蟲怎麽學習,因此寫下這篇隨筆,算不上教學,只是談談自己的想法。
實現爬蟲的方法有很多,我選取了個人覺得最容易理解、實現的方法。本篇隨筆涉及的爬蟲知識不多,難度主要在安裝相應的庫上面!
一、開發環境:
python3、xpath+Selenium
二、安裝
如果你已經有了pip管理工具了:(其他安裝方法自行百度)
1 pip install selenium
1 pip install lxml
python爬蟲中的xpath具體使用請參考:https://www.cnblogs.com/lei0213/p/7506130.html
selenium具體使用請參考:https://blog.csdn.net/weixin_36279318/article/details/79475388
三、案例
本次已爬取貓眼電影-Top100榜為例,目標鏈接:http://maoyan.com/board/4
第一步:使用selenium獲取目標頁面的源代碼
1 from selenium import webdriver 2 # 本人phantomjs驅動的路徑 3 driver = webdriver.PhantomJS(‘D:\phantomjs-2.1.1-windows\phantomjs.exe‘) 4 url = ‘http://maoyan.com/board/4’5 driver.get(url) 6 html = driver.page_source 7 print(html)
第二步:使用xpath獲取我們想要的信息
本次我們就爬取電影排名和電影名稱。
首先我們打開開發者工具,選擇要素找到排名的位置
然後選中相應HTML語句右擊copy-copy xpath
我們選取幾個比較一下,很容易得到電影排名的路徑://*[@id="app"]/div/div/div[1]/dl/dd/i
如法炮制我們獲得電影名的路徑://*[@id="app"]/div/div/div[1]/dl/dd/div/div/div[1]/p[1]/a
1 wb_date = driver.page_source2 html = etree.HTML(wb_date) 3 name_result = html.xpath(‘//*[@id="app"]/div/div/div[1]/dl/dd/div/div/div[1]/p[1]/a‘) 4 rank_result = html.xpath(‘//*[@id="app"]/div/div/div[1]/dl/dd/i‘) 5 for i in range(len(rank_result)): 6 print(rank_result[i].text, name_result[i].text)
就這樣我們很輕松的爬取了當前頁面的排名
接著我們看一下分頁的爬取,我們點擊下一頁,不難發現URL發生了改變(例:http://maoyan.com/board/4?offset=10),多了offset的參數,可以發現這裏的offset就是代表分頁,因此我們給目標鏈接出入offset參數,便可以實現其他90部電影的爬取。
1 def get_result(offset): 2 url = ‘http://maoyan.com/board/4?offset=‘ + str(offset) 3 driver.get(url) 4 wb_date = driver.page_source 5 html = etree.HTML(wb_date) 6 name_result = html.xpath(‘//*[@id="app"]/div/div/div[1]/dl/dd/div/div/div[1]/p[1]/a‘) 7 rank_result = html.xpath(‘//*[@id="app"]/div/div/div[1]/dl/dd/i‘) 8 for i in range(len(rank_result)): 9 print(rank_result[i].text, name_result[i].text) 10 11 if __name__ == ‘__main__‘: 12 for i in range(10): 13 offset = i * 10 14 get_result(offset) # 為了避免對目標網站造成麻煩,我們可以在這裏sleep一下
四、小結
本篇隨筆只是簡單的介紹了如何快速定位元素在XML文檔中的位置,和簡單的使用xpath+Selenium。掌握了xpath+Selenium,我們就能爬取很多網站了。當然現在很多網站都有了各式各樣的反爬,我們一步步破解反爬的過程不也正是爬蟲的樂趣所在!希望讀者能夠通過本篇文章了解到什麽是python爬蟲,及爬蟲的簡單的實現,並能從中找到樂趣!掌握了如何獲得數據,我覺得最重要的還是如何處理我們爬取的數據!
“最簡單”的爬蟲開發方法