1. 程式人生 > >“最簡單”的爬蟲開發方法

“最簡單”的爬蟲開發方法

網站 輕松 技術 文章 定位元素 main spa 探討 sleep

背景:

  本人接觸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_source
2 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爬蟲,及爬蟲的簡單的實現,並能從中找到樂趣!掌握了如何獲得數據,我覺得最重要的還是如何處理我們爬取的數據!

“最簡單”的爬蟲開發方法