自學人工智慧:1-2使用python寫爬蟲

馮建發表於2018-02-02

前言

用python結合selenium模組寫爬蟲程式簡單多了,還可直接驅動瀏覽器,比無頭瀏覽器更加直觀,同時加深了自己對爬蟲的理解

場景

工作原因要採集1688網站上的店鋪資訊(突然意識到這文章是釋出在阿里雲棲社群,明目張膽採集馬爸爸家店鋪資訊是不是不太好),另外訪問頻繁,經常需要驗證碼,python這時可以大顯身手。

準備

部分程式碼

from selenium import webdriver   # 匯入webdriver包  
driver = webdriver.Firefox()    # 初始化一個火狐瀏覽器例項,記得安裝火狐瀏覽器 
driver.maximize_window()        # 最大化瀏覽器,根據需要 
driver.get("https://www.1688.com")  # 通過get()方法,開啟一個url站點  
driver.quit()     #關閉並退出瀏覽器

然後通過css選擇器、xpath等定位目標位置。
由於資料需要入庫,平時經常使用mysql資料庫,百度了一番,引入pymysql模組

import pymysql
# 開啟資料庫連線
db = pymysql.connect("localhost","testuser","test123","TESTDB" )
# 使用 cursor() 方法建立一個遊標物件 cursor
cursor = db.cursor()
# 使用 execute()  方法執行 SQL 查詢 
cursor.execute("SELECT VERSION()")
# 使用 fetchone() 方法獲取單條資料.
data = cursor.fetchone()
print ("Database version : %s " % data)
# 關閉資料庫連線
db.close()

再完善程式碼,就可以完成店鋪資訊初步採集。

補充:驗證碼處理

一開始,嘗試自己寫程式碼識別圖片驗證碼,首先對圖片進行處理:二值化、降噪,這兩步容易實現,
接著分割字元時,對於字母型別連在一起的不知道如何正確處理,於是取內容部分的寬度進行等分。
到了識別環節,查閱資料得知:有可以直接拿來用的識別庫;還可以通過機器學習來訓練識別驗證碼。
考慮到自己基礎薄弱,機器學習來訓練實踐起來難度高,再者短期內這些知識使用頻率不高,最終放棄自己寫程式碼識別驗證碼。

最後的解決方案:

偷懶,選用了第三方的圖片識別服務,提交驗證碼圖片到服務商,返回正確的結果。-,-

總結

程式雖然簡單,確實感受到了python程式碼的簡潔效率,需要使用的功能,直接引入模組查詢使用方法就能幫助快速完成功能。
現在僅僅會使用前輩提供的模組,通過python來實現自己想要的小功能,背後的邏輯、python的程式設計思維,還需逐步理解深入。


相關文章