详细船舶信息爬虫教程:船讯网根据MMSI爬取对应船舶属性信息|附python爬虫代码

船讯网根据获得的MMSI信息对于每个对应船舶的信息进行爬取

在这里插入图片描述

船讯网网址:http://www.shipxy.com/
这里爬取的内容包括了船舶的mmsi,imo,船舶宽度,船舶长度,船舶吃水深度等比较详细的信息,大体思路是根据Post得到数据然后我导入了mysql的数据库里。

mmsi数据是我之前爬取船舶的运动轨迹的时候就已经爬取得到了的。

代码原来是CSDN上一位学者根据船名爬取MMSI改的,他那个数据请求方式是get,稍有出入。


首先登陆 船舶网 发送请求,对其request method进行查看。可以发现数据的请求方式是post。
在这里插入图片描述


再看数据需要输入的内容,这里只有mmsi。
在这里插入图片描述


再看输出,在preview里面,就是我们要得到的内容。
在这里插入图片描述


关于爬虫的代码我附在最后,这个也是我写的第一篇CSDN,作为自己的心得记录,希望可以和更多的人一起交流~

import requests
import os
import time
import pymysql
import pandas as pd
import re
import random


'''
author:longcheng
function:通过读取船舶数据,分别请求拿到dict数据入库
'''

#定义入库的类
class company_ship_in_database:
    def __init__(self):
        self.conn = pymysql.connect(host="",port=, user="", password="", database="", charset="utf8")
        self.cursor = self.conn.cursor()
        self.last_path = os.path.abspath(os.path.dirname(os.getcwd()))
    #写入mysql
    def in_database(self,data_list):
          #data_list为所有数据的列表
        j=1
        sql = ""
        for i in data_list:
            # if self.if_inbase(i['mmsi']):
            #
            #     update_sql="UPDATE trail_info SET source = '"+ str(i['source']) +",shipid = '"+str(i['shipid']) +" WHERE mmsi = '" + i['mmsi'] + "'"
            #
            #     self.cursor.execute(update_sql)
            #     self.conn.commit()
            #     print("已经更新第" + str(j) + "条")
            # else:

            insert_sql='insert into trail_info(mmsi,imo,name,callsign,length,width,trail,draught,lon,lat,sog,cog,hdg,rot,navistatus,lastdyn,satelliteutc) values("{}","{}","{}","{}",{},{},{},{},{},{},{},{},{},{},{},{},{})'.format(i['mmsi'],i['imo'],i['name'],i['callsign'],i['length'],i['width'],i['trail'],i['draught'],i['lon'],i['lat'],i['sog'],i['cog'],i['hdg'],i['rot'],i['navistatus'],i['lastdyn'],i['satelliteutc'])
            # print(insert_sql)
            self.cursor.execute(insert_sql)
            print("已经插入第" + str(j) + "条,mmsi = "+ i['mmsi'])
            self.conn.commit()
            j=j+1


    "得到需要查询信息的mmsi"
    def get_mmsi(self):
        mmsi_sql = "select distinct mmsi from trail3 order by mmsi"
        self.cursor.execute(mmsi_sql)
        mmsi_group = self.cursor.fetchall()
        return mmsi_group

    #请求船的方法
    def company_ship_in_database(self):
        mmsi_group = self.get_mmsi()
        data=[]
        j = 0

        for i in mmsi_group:
            chuan=i[0]

            dic2 = {
                'mmsi':chuan
            }

            # rq=requests.get("http://searchv3.shipxy.com/shipdata/search3.ashx",params=dic)
            rq2 = requests.post("http://www.shipxy.com/ship/GetShip",data=dic2)
            if rq2.status_code==200:
                try:
                    import json
                    result2 = json.loads(rq2.text)
                    data.append(result2['data'][0])
                    print("mmsi:",chuan)
                    # df = pd.DataFrame.from_dict(result2['data'][0], orient='index')
                    # df = df.T
                    # print()
                except:
                    data.append([""])

            else:
                print(chuan + "请求错误")
            # time.sleep(random.random())
            j = j + 1
            if divmod(j,100)[1] == 0:
                print("已经请求" + str(j) + "条")
        print("已完成查询,准备入库....")
        self.in_database(data)
        return data

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



欢迎大家一起交流哦~

  • 13
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 29
    评论
Python基于AIS数据的船舶轨迹修复方法研究代码可以包括以下几个方面的内容: 1. 数据预处理:首先需要加载AIS数据,并对数据进行预处理。可以使用Python中的pandas库或者numpy库来读取和处理数据,包括数据清洗、去重、数据类型转换等操作。 2. 轨迹分段:根据AIS数据中的船舶标识(MMSI)对数据进行分段,将同一个船舶的数据归为一组。可以使用Python中的groupby函数或者自定义函数来实现这一步骤。 3. 轨迹修复算法:根据船舶轨迹数据中的时间戳和位置信息,可以使用插值算法来对数据进行修复。常用的插值算法包括线性插值、样条插值等。可以使用Python中的scipy库或者numpy库中的插值函数来实现。 4. 轨迹可视化:修复完成后,可以使用Python中的matplotlib库或者其他可视化库将修复后的轨迹数据进行可视化展示。可以绘制轨迹线路图、轨迹点的散点图等。 5. 性能评估:修复完成后,可以对修复后的轨迹数据进行性能评估。可以计算修复前后的位置误差、轨迹长度等指标,评估修复算法的效果。 综上所述,Python基于AIS数据的船舶轨迹修复方法研究代码包括数据预处理、轨迹分段、轨迹修复算法、轨迹可视化和性能评估等步骤。通过这些步骤可以实现对AIS数据中的船舶轨迹进行修复和可视化展示,并对修复算法进行性能评估。
评论 29
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值