Selenium+Chrome爬取淘寶美食商品並存入MongoDB數據庫中

Selenium自動化測試工具,支持多種瀏覽器,主要用來解決JavaScript渲染的問題

 

需要的工具:Pycharm、python37、Chromedriver環境配置好、Chrome瀏覽器、Selenium庫、MongoDB可視化工具、pymongo庫

參考的書籍:python3網絡爬蟲開發與實戰---崔大神

Selenium+Chrome爬取淘寶美食並存入MongoDB數據庫中

流程框架:

  1. 搜索關鍵詞:利用Selenium驅動瀏覽器搜索關鍵詞,得到查詢後的商品列表
  2. 分析頁碼並翻頁:得到商品頁碼數,模擬翻頁,得到後續頁面的商品列表
  3. 分析提取商品內容:利用PyQuery分析源碼,解析得到商品列表
  4. 存儲至MongoDB,該商品列表信息存儲到數據庫MongoDB

源代碼在最下方,直接可以運行,不能運行的話,網頁就是變化了,自己改一下對應網頁變化的地方。

希望看到此文章的,學習到一點也是很好的。

還需要改進的地方:自動輸入賬號,密碼,點擊登錄。試了一下,自動輸入賬號和密碼時,滑塊自動鬆開了,也會出現失敗。然後自己又試手動滑動滑塊,也會出現失敗。又想到一個方法,點擊支付寶登錄,輸入支付寶賬號密碼,這種驗證碼tesserocr庫識別準確率也不會太高,可以提交給商家識別,能完成自動化爬取。我是手機掃二維碼才進入淘寶頁面,所以下面這部分代碼我把刪除呢。

如果有想用PhantomJS(無界面瀏覽器)來提高抓取速度,這裏行不通,因爲需要手機掃碼才能登錄

正文開始:

1、首先測試一下,selenium庫能否驅動Chrome瀏覽器,彈出瀏覽器窗口,說明配置正常(在這裏最好關閉Chrome自動更新,不然Chromedriver版本會與Chrome版本不匹配)

 

2、打開Chrome瀏覽器,搜索Chromedriver,可以看到它的具體詳情功能。(VPN推薦:http://coolgay.xyz/  3塊錢一個月,挺好用,如果關閉VPN發現百度連不上,需要自己關閉代理,有時候會出現沒有自動關閉代理),如果沒有下載,可以在上面下載與你谷歌瀏覽器相對應的版本

 

 

3、搜索Python Selenium文檔https://selenium-python-zh.readthedocs.io/en/latest/waits.html,選擇第五個,瞭解顯示等待和隱式等待的區別,複製粘貼顯示等待的代碼

 

4、打開淘寶頁面,點擊箭頭選擇器放在搜索框,可以對應到源代碼。右擊源代碼部分,點擊Copy,再選擇Copy selector。By後改成CSS_SELECTOR,將雙引號裏的改成剛纔Copy的元素。意思是等待頁面加載完成,首先獲取頁碼輸入框,賦值爲input。

 

5、上面是輸入框,下面就需要提交按鈕,與上一步是一樣的,右擊對應源代碼部分,Copy,Copy selector。可以看到文檔裏有點擊按鈕的功能element_to_be_clickable,將雙引號裏面的替換掉按鈕的元素。意思是獲取“確定”按鈕,賦值爲submit

 

6、因爲WebDriverWait(browser, 10)後面會經常用到,這裏改寫一下,意思是等待加載時間,使用WebDriver()對象,可以指定等待條件,同時指定一個最長等待時間,這裏設置的是10s。EC也是改寫的,不然寫expected_conditions太長,意思是如果在這個時間內匹配了等待時間,也就是說頁面元素成功加載出來了,即立即返回相應結果並繼續向下執行,否則到了最大等待時間還沒有加載出來時,就直接拋出超時異常

 

7、在輸入框中輸入美食兩個字,並且點擊搜索按鈕提交。可以看文檔中有參考。main方法調用search方法,運行該程序,可以看到自動彈出Chrome瀏覽器。我這邊是手機掃碼進去的。

 

8、這一步測試一下翻頁的操作,選擇器移到藍色陰影的部分,點擊確定,還要比對一下是否已經翻頁,還需要與頁數高亮的部分進行配對,如果頁數與高亮部分一樣,說明翻頁成功。運行程序可以看到Chrome瀏覽器一直在進行翻頁操作

 

9、對每一頁的寶貝進行解析,打印輸出信息。該方法在點擊美食頁面加載完成調用一次,在點擊下一頁頁面加載完成時,再調用一次。代碼省略,下面我會把源代碼放在github,並且有詳細註解

 

10、下面是把解析打印出來的數據存儲到MongoDB中,save_to_mongo方法放在get_products方法中調用,因爲要將數據傳入MongoDB中。可以看到打印出來的信息與MongoDB數據庫中數據一樣

 

詳細代碼在GitHubhttps://github.com/15160200501/TaoBao/blob/master/TaoBao.py

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章