最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于Python實(shí)現(xiàn)船舶的MMSI的獲取(推薦)

 更新時(shí)間:2019年10月21日 10:21:26   作者:沐浴清風(fēng)z  
工作中遇到一個(gè)需求,需要通過(guò)網(wǎng)站查詢船舶名稱得到MMSI碼,網(wǎng)站來(lái)自船訊網(wǎng)。這篇文章主要介紹了基于Python實(shí)現(xiàn)船舶的MMSI的獲取,需要的朋友可以參考下

目的

工作中遇到一個(gè)需求,通過(guò)需要通過(guò)網(wǎng)站查詢船舶名稱得到MMSI碼,網(wǎng)站來(lái)自船訊網(wǎng)。

數(shù)據(jù)位置

分析請(qǐng)求

根據(jù)以往爬蟲(chóng)的經(jīng)驗(yàn),打開(kāi)F12,通過(guò)輸入船舶名稱,觀察發(fā)送的請(qǐng)求,發(fā)現(xiàn)返回?cái)?shù)據(jù)的網(wǎng)址

在這里插入圖片描述 在這里插入圖片描述

本身網(wǎng)址是一個(gè)get請(qǐng)求,直接用這個(gè)網(wǎng)址請(qǐng)求,也能返回?cái)?shù)據(jù),即網(wǎng)址本身并沒(méi)有加密,這就簡(jiǎn)單許多,直接通過(guò)改變參數(shù),就能實(shí)現(xiàn)數(shù)據(jù)的獲取,馬上開(kāi)始動(dòng)手

在這里插入圖片描述

編寫(xiě)代碼

代碼中,通過(guò)request發(fā)送請(qǐng)求,為了不給服務(wù)器造成太大壓力,每隔0.5秒發(fā)送一個(gè)請(qǐng)求,因?yàn)闀?huì)出現(xiàn)查詢不到的情況,通過(guò)exception判斷,數(shù)據(jù)結(jié)果一是通過(guò)pandas中的to_excel存為excel文件,或者是直接通過(guò)pymysql入數(shù)據(jù)庫(kù),為了提高入庫(kù)的速度,采用一次拼接三百條的方式入庫(kù)

import requests
import os
import time
import pymysql
import pandas as pd
import re
'''
author:shikailiang
function:通過(guò)讀取船舶數(shù)據(jù),分別請(qǐng)求拿到j(luò)son數(shù)據(jù)入庫(kù)
'''

#定義入庫(kù)的類
class company_ship_in_database:
  def __init__(self):
    self.conn = pymysql.connect(host="192.168.1.222", user="root", password="Cjh#Sjzx@", database="test", charset="utf8")
    self.cursor = self.conn.cursor()
    #獲取當(dāng)前文件的父級(jí)地址
    self.last_path = os.path.abspath(os.path.dirname(os.getcwd()))
  #寫(xiě)入mysql
  def in_database(self,data_list):
  	#j用來(lái)對(duì)數(shù)據(jù)進(jìn)行計(jì)數(shù)
    j=1
    #定義sql
    sql = ""
    #定義sql頭
    sql0 = "insert into bms_company_ship_test(oc_name,ship_name,mmsi) values"
    rowcount=len(data_list)
    for i in data_list:
    	#定義拼接sql
      sql2 = (("(" + "'{}'," * 3)[:-1] + ")").format(i[1][0],i[1][1],i[0])
      sql = sql + "," + sql2
      # print(sql0 + sql[1:])
      if divmod(j, 300)[1] == 0 or j == rowcount:
        #如果執(zhí)行錯(cuò)誤回滾當(dāng)前事務(wù)
        # print(sql0 + sql[1:])
        try:
          self.cursor.execute(sql0 + sql[1:])

        except:
        	#執(zhí)行錯(cuò)誤,回滾事務(wù)
          self.conn.rollback()
          continue
        sql= ""
      self.conn.commit()
      j=j+1
  #通過(guò)pandas寫(xiě)入excel
  def in_xls(self, data_list):
    df=pd.DataFrame(data_list)
    #通過(guò)pandas實(shí)現(xiàn)存為excel
    df.to_excel(self.last_path + r"\data\result.xls",header=False,index=False)
  #請(qǐng)求船的方法
  def company_ship_in_database(self):
    data_path = self.last_path + r"\data"
    file=open(data_path + "\company.txt")
    data=[]
    j = 0
    for i in file.readlines():
    	#將船公司和船舶名稱分開(kāi)
      chuan=i.strip().split()
      dic={
      'f':'auto',
      'kw':chuan[1]
      }
      rq=requests.get("http://searchv3.shipxy.com/shipdata/search3.ashx",params=dic)
      #判斷是否請(qǐng)求成功
      if rq.status_code==200:
        try:
          result_json=rq.json()
          result=result_json['ship'][0]
          #判斷船舶數(shù)字部分是否相同
          if re.search('\d+',result['n']).group()==re.search('\d+',chuan[1]).group():
            result=result['m']
            data.append([result,chuan])
          else:
            data.append(["", chuan])
        except:
          data.append(["",chuan])

      else:
        print(chuan + "請(qǐng)求錯(cuò)誤")
      time.sleep(0.5)
      j = j + 1
      if divmod(j,100)[1] == 0:
        print("已經(jīng)請(qǐng)求" + str(j) + "條")
      # if j > 10:
      #  self.in_xls(data)
        # break
    self.in_database(data)

if __name__=="__main__":
  company_ship=company_ship_in_database()
  company_ship.company_ship_in_database()

尾記

寫(xiě)程序的過(guò)程中其實(shí)有發(fā)現(xiàn)一個(gè)問(wèn)題,即我們請(qǐng)求的其實(shí)是輸入文字時(shí)候自動(dòng)發(fā)送的請(qǐng)求,其實(shí)有一個(gè)問(wèn)題,如果我們需要查詢的是"華為5"的船,但是如果系統(tǒng)中沒(méi)有這個(gè)船,就是返回"華為548"扽船,所以在代碼中需要做一個(gè)判斷

在這里插入圖片描述 

即用正則提取出船的數(shù)字,然后和返回的船的數(shù)字進(jìn)行比對(duì),如果一致,即為同一條船舶

在這里插入圖片描述

總結(jié)

以上所述是小編給大家介紹的基于Python實(shí)現(xiàn)船舶的MMSI的獲取,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺(jué)得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!

相關(guān)文章

  • pygame開(kāi)發(fā):馬賽邏輯小游戲的代碼實(shí)現(xiàn)

    pygame開(kāi)發(fā):馬賽邏輯小游戲的代碼實(shí)現(xiàn)

    這篇文章主要介紹了pygame開(kāi)發(fā),通過(guò)本文,您可以使用pygame開(kāi)發(fā)一個(gè)馬賽邏輯小游戲~有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-09-09
  • Django解決CORS跨域問(wèn)題的方案

    Django解決CORS跨域問(wèn)題的方案

    Cross-Origin Resource Sharing(CORS) 跨域問(wèn)題,在前后端后離項(xiàng)目,selenium , playweight 自動(dòng)化測(cè)試代碼中經(jīng)常遇到,本文給大家介紹了Django解決CORS跨域問(wèn)題的方案,文中有詳細(xì)的代碼講解,需要的朋友可以參考下
    2024-03-03
  • python PrettyTable模塊的安裝與簡(jiǎn)單應(yīng)用

    python PrettyTable模塊的安裝與簡(jiǎn)單應(yīng)用

    prettyTable 是一款很簡(jiǎn)潔但是功能強(qiáng)大的第三方模塊,主要是將輸入的數(shù)據(jù)轉(zhuǎn)化為格式化的形式來(lái)輸出,這篇文章主要介紹了python PrettyTable模塊的安裝與簡(jiǎn)單應(yīng)用,感興趣的小伙伴們可以參考一下
    2019-01-01
  • python將四元數(shù)變換為旋轉(zhuǎn)矩陣的實(shí)例

    python將四元數(shù)變換為旋轉(zhuǎn)矩陣的實(shí)例

    今天小編就為大家分享一篇python將四元數(shù)變換為旋轉(zhuǎn)矩陣的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-12-12
  • python 使用uiautomator2連接手機(jī)設(shè)備的實(shí)現(xiàn)

    python 使用uiautomator2連接手機(jī)設(shè)備的實(shí)現(xiàn)

    這篇文章主要介紹了python 使用uiautomator2連接手機(jī)設(shè)備的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • 關(guān)于Pytorch的MLP模塊實(shí)現(xiàn)方式

    關(guān)于Pytorch的MLP模塊實(shí)現(xiàn)方式

    今天小編就為大家分享一篇關(guān)于Pytorch的MLP模塊實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-01-01
  • python自動(dòng)化測(cè)試selenium執(zhí)行js腳本實(shí)現(xiàn)示例

    python自動(dòng)化測(cè)試selenium執(zhí)行js腳本實(shí)現(xiàn)示例

    這篇文章主要為大家介紹了python自動(dòng)化測(cè)試selenium執(zhí)行js腳本的實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-11-11
  • 4行Python代碼生成圖像驗(yàn)證碼(2種)

    4行Python代碼生成圖像驗(yàn)證碼(2種)

    這篇文章主要介紹了4行Python代碼生成圖像驗(yàn)證碼(2種),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • python 尋找優(yōu)化使成本函數(shù)最小的最優(yōu)解的方法

    python 尋找優(yōu)化使成本函數(shù)最小的最優(yōu)解的方法

    這篇文章主要介紹了python 尋找優(yōu)化使成本函數(shù)最小的最優(yōu)解的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-12
  • Python實(shí)現(xiàn)圖數(shù)據(jù)處理的完整指南

    Python實(shí)現(xiàn)圖數(shù)據(jù)處理的完整指南

    圖是一種非常重要的數(shù)據(jù)結(jié)構(gòu),在Python中,我們可以使用鄰接矩陣來(lái)表示圖,這篇文章主要為大家介紹了Python實(shí)現(xiàn)圖數(shù)據(jù)處理的相關(guān)知識(shí),需要的可以參考下
    2024-04-04

最新評(píng)論

博乐市| 永靖县| 嘉定区| 潼南县| 库伦旗| 吕梁市| 金湖县| 石狮市| 赣州市| 东明县| 孝义市| 桐梓县| 昭觉县| 芜湖市| 依兰县| 宜兰县| 富蕴县| 万安县| 临邑县| 麦盖提县| 博罗县| 桓台县| 达孜县| 成安县| 广安市| 高平市| 曲阜市| 仲巴县| 海门市| 衡东县| 河西区| 岳阳市| 从化市| 双峰县| 习水县| 贵州省| 岗巴县| 曲松县| 清镇市| 眉山市| 九江县|