事先聲明:本文章所獲得的信息均通過合法手段獲得(本人為政府部門工作,爬蟲行為均經過授權),爬蟲需遵守各項法律法規,不該爬取的信息不爬。
最近因為做博士畢業設計需要用到ais信息,但在船訊網爬取ais的時候遇到了問題,因為之前爬取的人太多,所以網站加上了反爬措施,csdn上之前的代碼全都不能用了,但在我孜孜不倦的嘗試和學習下,攻克了這一難關,在學習的過程中自己的爬蟲技術也獲得了很大的進展,現將經驗分享如下。
一:初級解決方案(爬蟲入門級玩家)。我們使用簡單的代碼轉換器和搜索接口,或者使用簡單xpath工具,以及正則匹配和數據庫(或者csv,能存儲數據就行),可以獲得我們想要的ais信息,并將它編寫成代碼。
import requests
import csv
#爬蟲謹慎使用!爬蟲過多使用會導致網站反爬修改代碼導致爬蟲失效!
'''
出現PermissionError: [Errno 13] Permission denied: 'ais.csv'
是因為將數據文件ais.csv打開了,將其關閉即可恢復正常。
'''
#將搜索到的信息添加進excel(csv)
def readAndWrite(totalMessage):#沒有該文件csv文件的話自動生成csv文件#查詢已有的mmsi列表mmsiList=[]notEmpty=False#判斷文件是否為空 with open('ais.csv','a') as file:passwith open('ais.csv','r') as file:lines=file.readlines()notEmpty=bool(lines)for line