先來花2分鐘看下視頻中效果
Python+Selenium實現思路
無論咱們在做任何項目的時候,我們都應該先要有一個整體的設計圖,比如建房子需要建築圖,做家裝的需要裝修圖,施工人員需要施工圖。所以我們在做研發的時候也是一樣的,首先我們要明確我們想要做的東西,做成什麼樣子,最終的結果在心裡有一個預想。
Python+Selenium任務分解及代碼實現
python和selenium環境安裝我這裡就不給大家介紹了,畢竟網上教程一大堆,自己動手搜索一下即可
一、明確我們想要爬取的內容
- 比如我們想要獲取實時新聞,那麼我們可以爬取一些熱門新聞網站的內容,比如騰訊,今日頭條等各大網站的推薦內容。如果我們想要獲取娛樂八卦內容,那麼我們可以爬取新浪微博上面的一些娛樂內容。如果我們想要獲取搞笑內容,那麼我們可以爬取一些笑話網站的內容。
- 當我們明確爬取目標之後,我們需要去分析網頁內容,分析網頁中每一篇文章異同點,只有找到了共通點,我們才可以持續不斷的獲取網站內容。比如我爬取的笑話天地的內容。打開你要爬取的內容頁面,然後按下F12,鼠標左鍵點擊下方圖片中標註的圖標,然後點擊頁面上內容。
3.比如我獲取到了文章的標題,然後直接右鍵依次拿到這個標籤的xPath即可。這個值我們後面就是我們爬蟲需要定位到的元素值。就好比我們每一個人都有一個居住地址,你的朋友會根據這個地址找到我們的人。爬蟲就是你的朋友。而XPath就是你想要內容的居住地址。然後依次找到我們想要的內容地址,把它們都保存起來。
二、內容保存的方式
當我們通過第一步找到我們想要的內容,那麼我們需要將內容存放在哪裡,以供我們後面使用呢?其實保存數據的方式有很多種,根據不同的數據類型可以選擇不同的保存方式。比如常見的保存方式有以文本的形式保存,也可以用數據庫來保存。
- 文本存儲:就是將我們獲取到的數據內容通過文本的方式保存到硬盤中,保存文本的Python代碼如下。因此我們只需要在獲取到內容的時候,寫入到文本文件即可。
<code>#相當於打開了一個test.txt的文本文件,以write的方式
f1 = open('/tmp/test.txt','w')
#寫入內容,蜜蜂攻城獅的英文,當然還可以選擇編碼格式,
f1.write('mifenggongchengshi')/<code>
2.數據庫存儲:可以根據自己的獲取到的數據類型選擇不同的數據庫,比如mongoDB,MySql,Oracle均可,因為我的服務器上安裝了Mysql,並且我的數據比較單一,因此我選擇了mysql來存儲數據,詳細代碼如下
<code>#首先在代碼中導入
import pymysql
# 打開數據庫連接,編碼格式為UTF-8
conn = pymysql.connect (host='你的IP', port=3306, user='用戶名', passwd='密碼', db='數據庫名',
charset='utf8')
# 獲取遊標
cursor = conn.cursor ()
#執行咱們的sql語句,在這裡我們查詢
cursor.execute ('select num from xiaohuatiandi')
#然後獲取一條數據即可
data = cursor.fetchone ()/<code>
三、博客登錄
- 當我們得到數據後,我們需要登錄到博客後臺,自動登錄系統基本都是差不多的,無非就是很多的網站加入了反爬校驗。只需要根據特定的網站進行特定代碼編寫即可。下面是我的博客登錄代碼
<code> # 模擬創建一個瀏覽器對象,然後通過對象去操作瀏覽器
browser1 = webdriver.Chrome (executable_path=driver_path)
# 發送請求
browser1.get ('http://blog.zhaoyueyi.cn/wp-login.php?redirect_to=http%3A%2F%2Fblog.zhaoyueyi.cn%2Fwp-admin%2F&reauth=1')
# 登錄博客後臺
time.sleep (5)
#//*[@id="user_login"]這個就是我們在第一節說到的xpath地址。
browser1.find_element_by_xpath ('//*[@id="user_login"]').send_keys ('賬戶名')
browser1.find_element_by_xpath ('//*[@id="user_pass"]').send_keys ('密碼')
\t\t\t\t#然後模擬點擊登錄按鈕
browser1.find_element_by_xpath ('//*[@id="wp-submit"]').click ()/<code>
當然,在咱們登錄的時候,有很多網站需要輸入或者滑動校驗碼。而我常用的校驗碼是超級鷹,超級鷹用起來非常簡單。這裡我就不給大家展示了,不明白的可以下方留言。另外如果有驗證碼的咱們也可以做成半自動,即手動輸入驗證碼。如果大家有興趣,還可以使用cookie技術實現免登陸。cookie免登陸這個在網上也能找到,如果不明白的可以下方諮詢,我會給大家提供技術指導。
四、內容發佈
- 當我們登陸到平臺後,我們就可以將上面獲取到的內容發佈到平臺上了,正如我上方視頻演示的一樣,只需要你按照教程中的方式,找到每一個標籤的xpath即可,然後模擬咱們人的行為,讓爬蟲自己去完成這一系列操作
- 咱們獲取到的內容是別人創作的內容,因此,我們在選擇發佈的時候,我們需要尊重別人的勞動成果,加上原創者的信息,轉載地址等等。還可以留下自己的聯繫方式,如果有侵權行為,作者可以及時的聯繫到你。
五、設置定時任務
當我們完成了腳本的研發, 並且測試通過之後沒有問題後,我們需要設置一個定時任務,讓其自動運行,無須咱們操作。windows類型的任務創建的方法大家也可以參考下圖,linux不同的系統可以查閱相關資料設置,我這邊使用的是centos,因此我使用的是cron來實現的。
總結
按照這一個思路,其實你已經可以解決目前80%的內容爬取。其實爬蟲難得不是數據的獲取,而是數據的篩選以及整理。
注意注意注意:在爬取之前,一定要查看被爬網站的robots文件,這個文件裡面有說明那些內容可爬,那些不可爬。本文只做技術分享,請勿濫用。
以上內容均為今日頭條原創首發,轉載請註明來源,如有疑問可下方留言或私信我。
我是蜜蜂,我愛編程
2020年3月11日,By:蜜蜂攻城獅
閱讀更多 蜜蜂攻城獅 的文章