Python爬取Boss直聘,获取全国Python薪酬榜

用Python做了个自动发消息的程序,人都离开了也不耽误事,太好用了 代替你去发弹幕,甚至有聊天轰炸的效果 阅读详情
深感抱歉

本来这篇文章应该是在昨天发的,可是电脑出了问题蓝屏了。晚上回来重装了系统,结果还是搞到了现在。

今天想和大家聊聊Python与爬虫

python之所以能迅速风靡全国,和大街小巷各种的培训机构脱不开关系。
一会pythonAI未来以来,一会儿4个月培养人工智能与机器学习顶尖人才,更有甚者什么一周成就爬虫分析师...
我这一把年纪了,胆子小只敢在自己的公众号里说说。至于出去了,你们该实力互吹、生猛造势的,我看看就好不说话。
网上经常看到爬虫的文章,什么爬了几十万数据,一把撸下来几千万评论的,听起来高大上又牛逼。
但其实爬虫工程师,你看网上有几个招聘的?为什么,因为数据有价!
各大厂做什么网络解决方案的,怎么解决?不得先把各大运营商数据买回来分析了才去解决吗?天下哪有白吃的午餐。

爬虫面临的问题
  1. 不再是单纯的数据一把抓
    多数的网站还是请求来了,一把将所有数据塞进去返回,但现在更多的网站使用数据的异步加载,爬虫不再像之前那么方便
    很多人说js异步加载与数据解析,爬虫可以做到啊,恩是的,无非增加些工作量,那是你没遇到牛逼的前端,多数的解决办法只能靠渲染浏览器抓取,效率低下,接着往下走

  2. 千姿百态的登陆验证
    从12306的说说下面哪个糖是奶糖,到现在各大网站的滑动拼图、汉子点击解锁,这些操作都是在为了阻止爬虫的自动化运行。
    你说可以先登录了复制cookie,但cookie也有失效期吧?

  3. 反爬虫机制
    何为反爬虫?犀利的解释网上到处搜,简单的逻辑我讲给你听。你几秒钟访问了我的网站一千次,不好意思,我把你的ip禁掉,一段时间你别来了。
    很多人又说了,你也太菜了吧,不知道有爬虫ip代理池的开源项目IPProxys吗?那我就呵呵了,几个人真的现在用过免费的ip代理池,你去看看现在的免费代理池,有几个是可用的!
    再说了,你通过IPProxys代理池,获取到可用的代理访问人家网站,人家网站不会用同样的办法查到可用的代理先一步封掉吗?然后你只能花钱去买付费的代理

  4. 数据源头封锁
    平时大家看的什么爬爬豆瓣电影网站啊,收集下某宝评论啊....这些都是公开数据。但现在更多的数据逐步走向闭源化。数据的价值越来越大,没有数据获取的源头,爬虫面临什么问题?

个人面对爬虫的态度

学习爬虫,可以让你多掌握一门技术,但个人劝你不要在这条路走的太深。没事儿爬点小东西,学习下网络知识,掌握些网页解析技巧就好了。再牛逼的爬虫框架,也解决不了你没数据的苦恼。

说说今天内容

扯了一圈了,该回到主题了。
上面说了一堆的爬虫这不好那不好,结果我今天发的文章确是爬虫的,自己打自己的脸?
其实我只是想说说网站数据展示与分析的技巧...恰巧Boss直聘就做的很不错。怎么不错?一点点分析...

  • 数据共享
    先来看一张图:
    5847426-dc1abfe937d4df16.png
    大兴安岭

    我选择黑龙江省的大兴安岭,去看看那里有招聘python的没,多数系统查询不到数据就会给你提示未获取到相关数据,但Boss直聘会悄悄地吧黑龙江省的python招聘信息给你显示处理,够鸡~贼。
  • 数据限制
    大兴安岭没有搞python的,那我们去全国看看吧:
    5847426-eabca7c24ca532ac.png
    全国数据

    这里差一点就把我坑了,我开始天真的以为,全国只有300条(一页30条,共10也)python招聘信息。
    然后我回过头去看西安的,也只有10页,然后想着修改下他的get请求parameters,没卵用。
    这有啥用?仔细想...一方面可以做到放置咱们爬虫一下获取所有的数据,但这只是你自作多情,这东西是商机!
    每天那么多的商家发布招聘信息,进入不了top100,别人想看都看不到你的消息,除非搜索名字。那么如何排名靠前?答案就是最后俩字,靠钱。你是Boss直聘的会员,你发布的就会靠前....
  • 偷换概念
    依旧先看图:
    5847426-b6d6317bbd96f2ea.png
    大杂烩

    我搜索的是ruby,你资料不够,其他来凑....
  • ip解析
    老套路,再来看一张图:
    5847426-d59120b5cc1fc3af.png
    封“神”榜

感觉人生已经到达了高潮,感觉人生已经到达了巅峰

Boss直聘的服务器里,留着我的痕迹,多么骄傲的事情啊。你们想不想和我一样?只需要3秒钟....
三秒钟内你的访问量能超过1000,妥妥被封!

  • 反反反爬虫
    咱们正常的叫爬虫,它不让我们爬,这叫反爬虫,然后我们用ip代理池的ip,这叫反反爬虫。结果你发现,人家早就把可用的代理池先一步封了,这叫反反反爬虫....
    免费代理池中,很多代理是不可用或者需要输入密码的。好不容易找到一些能用的列表,拉过来添加上发现早就被封掉了,也许是它提前禁掉,也许是别人用过被封了,但结局就是你千辛万苦找来的,往往最终还是失败的。
那么我们该怎么办
  1. 设置不同的User-Agent
    使用pip install fake-useragent安装后获取多种User-Agent,但其实本地保存上几十个,完全够了....
  2. 不要太夯(大力)
    适当的减慢你的速度,别人不会觉得是你菜....别觉得一秒爬几千比一秒爬几百的人牛逼(快枪手子弹打完的早....不算开车吧?)。
  3. 购买付费的代理
    为什么我跳过了说免费的代理?因为现在搞爬虫的人太多了,免费的基本早就列入各大网站的黑名单了。
说书今天的内容

爬取全国热点城市的职业,然后对各大城市的薪资进行比较。
原始数据如下:


5847426-c12023e6dccfa492.png
image.png

先来看看python的薪酬榜:


5847426-e31c6ce5d6b2c206.png
python薪酬榜

看一下西安的排位,薪资平均真的好低.....
至于你说薪资范围:什么15-20K?放心90%的人入职都只会给你15K的,那10%的人不是你,不是你。
再来看看ruby的:


5847426-3a8e5afa92ac13b8.png
Ruby薪酬榜

看这感觉比Python高很多啊....但其实呢?跟百度人均公司3W+一样,你拿人均算?光几个总裁年薪上亿的,就拉上去了....
但还是可以看到一点,西安的薪酬还是好低......
代码

代码其实没有太多讲的,篇幅最多的内容,估计就是我的User-Agent了....

# -*- coding: utf-8 -*-
# @Author   : 王翔
# @JianShu  : 清风Python
# @Date     : 2019/6/14 22:23
# @Software : PyCharm
# @version  :Python 3.6.8
# @File     : BossCrawler.py

import requests
from bs4 import BeautifulSoup
import csv
import random
import time
import argparse
from pyecharts.charts import Line
import pandas as pd


class BossCrawler:
    def __init__(self, query):

        self.query = query
        self.filename = 'boss_info_%s.csv' % self.query
        self.city_code_list = self.get_city()
        self.boss_info_list = []
        self.csv_header = ["city", "profession", "salary", "company"]

    @staticmethod
    def getheaders():
        user_list = [
            "Opera/9.80 (X11; Linux i686; Ubuntu/14.10) Presto/2.12.388 Version/12.16",
            "Opera/9.80 (Windows NT 6.0) Presto/2.12.388 Version/12.14",
            "Mozilla/5.0 (Windows NT 6.0; rv:2.0) Gecko/20100101 Firefox/4.0 Opera 12.14",
            "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.0) Opera 12.14",
            "Opera/12.80 (Windows NT 5.1; U; en) Presto/2.10.289 Version/12.02",
            "Opera/9.80 (Windows NT 6.1; U; es-ES) Presto/2.9.181 Version/12.00",
            "Opera/9.80 (Windows NT 5.1; U; zh-sg) Presto/2.9.181 Version/12.00",
            "Opera/12.0(Windows NT 5.2;U;en)Presto/22.9.168 Version/12.00",
            "Opera/12.0(Windows NT 5.1;U;en)Presto/22.9.168 Version/12.00",
            "Mozilla/5.0 (Windows NT 5.1) Gecko/20100101 Firefox/14.0 Opera/12.0",
            "Opera/9.80 (Windows NT 6.1; WOW64; U; pt) Presto/2.10.229 Version/11.62",
            "Opera/9.80 (Windows NT 6.0; U; pl) Presto/2.10.229 Version/11.62",
            "Opera/9.80 (Macintosh; Intel Mac OS X 10.6.8; U; fr) Presto/2.9.168 Version/11.52",
            "Opera/9.80 (Macintosh; Intel Mac OS X 10.6.8; U; de) Presto/2.9.168 Version/11.52",
            "Opera/9.80 (Windows NT 5.1; U; en) Presto/2.9.168 Version/11.51",
            "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; de) Opera 11.51",
            "Opera/9.80 (X11; Linux x86_64; U; fr) Presto/2.9.168 Version/11.50",
            "Opera/9.80 (X11; Linux i686; U; hu) Presto/2.9.168 Version/11.50",
            "Opera/9.80 (X11; Linux i686; U; ru) Presto/2.8.131 Version/11.11",
            "Opera/9.80 (X11; Linux i686; U; es-ES) Presto/2.8.131 Version/11.11",
            "Mozilla/5.0 (Windows NT 5.1; U; en; rv:1.8.1) Gecko/20061208 Firefox/5.0 Opera 11.11",
            "Opera/9.80 (X11; Linux x86_64; U; bg) Presto/2.8.131 Version/11.10",
            "Opera/9.80 (Windows NT 6.0; U; en) Presto/2.8.99 Version/11.10",
            "Opera/9.80 (Windows NT 5.1; U; zh-tw) Presto/2.8.131 Version/11.10",
            "Opera/9.80 (Windows NT 6.1; Opera Tablet/15165; U; en) Presto/2.8.149 Version/11.1",
            "Opera/9.80 (X11; Linux x86_64; U; Ubuntu/10.10 (maverick); pl) Presto/2.7.62 Version/11.01",
            "Opera/9.80 (X11; Linux i686; U; ja) Presto/2.7.62 Version/11.01",
            "Opera/9.80 (X11; Linux i686; U; fr) Presto/2.7.62 Version/11.01",
            "Opera/9.80 (Windows NT 6.1; U; zh-tw) Presto/2.7.62 Version/11.01",
            "Opera/9.80 (Windows NT 6.1; U; zh-cn) Presto/2.7.62 Version/11.01",
            "Opera/9.80 (Windows NT 6.1; U; sv) Presto/2.7.62 Version/11.01",
            "Opera/9.80 (Windows NT 6.1; U; en-US) Presto/2.7.62 Version/11.01",
            "Opera/9.80 (Windows NT 6.1; U; cs) Presto/2.7.62 Version/11.01",
            "Opera/9.80 (Windows NT 6.0; U; pl) Presto/2.7.62 Version/11.01",
            "Opera/9.80 (Windows NT 5.2; U; ru) Presto/2.7.62 Version/11.01",
            "Opera/9.80 (Windows NT 5.1; U;) Presto/2.7.62 Version/11.01",
            "Opera/9.80 (Windows NT 5.1; U; cs) Presto/2.7.62 Version/11.01",
            "Mozilla/5.0 (Windows NT 6.1; U; nl; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 Opera 11.01",
            "Mozilla/5.0 (Windows NT 6.1; U; de; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 Opera 11.01",
            "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; de) Opera 11.01",
            "Opera/9.80 (X11; Linux x86_64; U; pl) Presto/2.7.62 Version/11.00",
            "Opera/9.80 (X11; Linux i686; U; it) Presto/2.7.62 Version/11.00",
            "Opera/9.80 (Windows NT 6.1; U; zh-cn) Presto/2.6.37 Version/11.00",
            "Opera/9.80 (Windows NT 6.1; U; pl) Presto/2.7.62 Version/11.00",
            "Opera/9.80 (Windows NT 6.1; U; ko) Presto/2.7.62 Version/11.00",
            "Opera/9.80 (Windows NT 6.1; U; fi) Presto/2.7.62 Version/11.00",
            "Opera/9.80 (Windows NT 6.1; U; en-GB) Presto/2.7.62 Version/11.00",
            "Opera/9.80 (Windows NT 6.1 x64; U; en) Presto/2.7.62 Version/11.00",
            "Opera/9.80 (Windows NT 6.0; U; en) Presto/2.7.39 Version/11.00"
        ]
        user_agent = random.choice(user_list)
        headers = {'User-Agent': user_agent}
        return headers

    def get_city(self):
        headers = self.getheaders()
        r = requests.get("http://www.zhipin.com/wapi/zpCommon/data/city.json", headers=headers)
        data = r.json()
        return [city['code'] for city in data['zpData']['hotCityList'][1:]]

    def get_response(self, url, params=None):
        headers = self.getheaders()
        r = requests.get(url, headers=headers, params=params)
        r.encoding = 'utf-8'
        soup = BeautifulSoup(r.text, "lxml")
        return soup

    def get_url(self):
        for city_code in self.city_code_list:
            url = "https://www.zhipin.com/c%s/" % city_code
            self.per_page_info(url)
            time.sleep(10)

    def per_page_info(self, url):
        for page_num in range(1, 11):
            params = {"query": self.query, "page": page_num}
            soup = self.get_response(url, params)
            lines = soup.find('div', class_='job-list').select('ul > li')
            if not lines:
                # 代表没有数据了,换下一个城市
                return
            for line in lines:
                info_primary = line.find('div', class_="info-primary")
                city = info_primary.find('p').text.split(' ')[0]
                job = info_primary.find('div', class_="job-title").text
                # 过滤答非所谓的招聘信息
                if self.query.lower() not in job.lower():
                    continue
                salary = info_primary.find('span', class_="red").text.split('-')[0].replace('K', '')
                company = line.find('div', class_="info-company").find('a').text.lower()
                result = dict(zip(self.csv_header, [city, job, salary, company]))
                print(result)
                self.boss_info_list.append(result)

    def write_result(self):
        with open(self.filename, "w+", encoding='utf-8', newline='') as f:
            f_csv = csv.DictWriter(f, self.csv_header)
            f_csv.writeheader()
            f_csv.writerows(self.boss_info_list)

    def read_csv(self):
        data = pd.read_csv(self.filename, sep=",", header=0)
        data.groupby('city').mean()['salary'].to_frame('salary').reset_index().sort_values('salary', ascending=False)
        result = data.groupby('city').apply(lambda x: x.mean()).round(1)['salary'].to_frame(
            'salary').reset_index().sort_values('salary', ascending=False)
        print(result)
        charts_bar = (
            Line()
                .set_global_opts(
                title_opts={"text": "全国%s薪酬榜" % self.query})
                .add_xaxis(result.city.values.tolist())
                .add_yaxis("salary", result.salary.values.tolist())
        )
        charts_bar.render('%s.html' % self.query)


if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument("-k", "--keyword", help="请填写所需查询的关键字")
    args = parser.parse_args()
    if not args.keyword:
        print(parser.print_help())
    else:
        main = BossCrawler(args.keyword)
        main.get_url()
        main.write_result()
        main.read_csv()
结尾说两句
  1. 关于爬虫的问题,可能言语有些偏激,觉得那里说的不对的,大家可以在评论区讨论。
  2. 如果大家觉得这种个人言论过多的帖子不适合你们学习,也可以评论或者私信我,我以后少说点。
  3. ** 这点最重要,如果你们觉得我的文章还看得过去,每天更新还算辛苦,就帮忙把公众号推荐给你身边同样喜欢python的朋友**
  4. 其实这点对我有些重要,如果你看过觉得有收获,可以点击文章右下角的“在看”让我知道。
  5. 代码和数据和html,老规矩公众号回复boss,即可获取文章的数据、代码及pyecharts生成好的html文件...

今天的内容就到这里,如果觉得有帮助,记得点赞支持。欢迎大家关注我的公众号【清风Python】,
公众号内有整理好的各类福利数据供大家下载,扫码关注:


5847426-6a08c9b14c8a9d3d.png
清风Python
Python爬取Boss直聘,帮你获取全国各类职业薪酬榜 大兴安岭没有搞python的,那我们去全国看看吧:这里差一点就把我坑了,我开始天真的以为,全国只有300条(一页30条,共10也)python招聘信息。然后我回过头去看西安的,也只有10页,然后想着修改下他的get请求parameters,没卵用。这有啥用?仔细想…一方面可以做到放置咱们爬虫一下获取所有的数据,但这只是你自作多情,这东西是商机!每天那么多的商家发布招聘信息,进入不了top100,别人想看都看不到你的消息,除非搜索名字。那么如何排名靠前?答案就是最后俩字,靠钱。 阅读详情

相关推荐

打造IP代理池,Python爬取Boss直聘,帮你获取全国各类职业薪酬榜

爬虫面临的问题 不再是单纯的数据一把抓 多数的网站还是请求来了,一把将所有数据塞进去返回,但现在更多的网站使用数据的异步加载,爬虫不再像之前那么方便 很多人说js异步加载与数据解析,爬虫可以做到啊,恩是的,无非增加些工作量,那是你没遇到牛逼的前端,多数的解决办法只能靠渲染浏览器抓取,效率低下,接着往下走 千姿百态的登陆验证 从12306的说说下面哪个糖是奶糖,到现在各大网...

740

Python爬取Boss直聘,帮你获取全国各类职业薪酬榜,附大厂真题面经

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

ccc6553584的博客 1253

CANoe软件之离线报文回放与分析实战

本文详细介绍了如何使用CANoe软件进行离线报文回放与分析,帮助工程师将现场故障数据转化为可反复研究的实验室资源。通过实战步骤,指导如何搭建分析工程、加载DBC文件解码信号,并利用Trace和Graphics窗口进行深度数据筛选与图形化分析,从而高效定位汽车电子故障,是提升诊断效率的关键技能。

weixin_29227585的博客 529

BOSS直聘自动投简历聊天机器人的实现过程

这两年疫情,公司业务越来越差,必须得准备后路了,每天睡前都会在直聘上打一遍招呼,一直到打哈欠有睡意为止...,这样持续了一周,发现很难坚持,身为一名资深蜘蛛侠,怎么能这样下去呢?于是便萌生了对BOSS下手的念头。boss的web端功能已经挺完整了,所以直接使用无头浏览器(puppetter/playwright)应该就能搞定了,然后再整几个简单的界面,应该就差不多了。先看前端它用了哪些技术。

企智软件 1万+

MIT 6.824分布式 LAB4A:ShardCtrler

lab 4要求实现一个使用raft共识算法的分片存储系统。而在lab 4a中,我们仅需实现分片控制器的功能。lab4中的分片存储系统有多个分片,这些数据分布在众多分片上,而每个分片都对应着一个集群组,可能一个集群组负责多个分片,一个集群组内的所有服务器都会使用raft共识算法进行状态的复制。而本实验的重点为分片控制器,主要负责的工作是对集群组和分片之间关系的管理,我们仅需在/src/shardctrler文件夹中对client.go,server.go,common.go这三个文件进行修改即可。注意事项(实

MarksSa的博客 832

SAP批量数据导入实战:BDC、CATT、LSMW三大工具保姆级对比教程

本文深入对比了SAP系统中三大批量数据导入工具BDC、CATT和LSMW的核心定位、适用场景与实战操作。BDC适合复杂逻辑的编程式处理,CATT适合业务用户快速录制回放,LSMW则是数据迁移项目的结构化首选。文章提供了详细的选型决策框架、性能优化技巧及常见陷阱规避指南,帮助SAP顾问和开发者高效完成数据批量维护任务。

weixin_29213525的博客 151

使用python登录boss 并自动投递简历打招呼

使用的是 selenium4的 和3的版本语法有点出入 但是大差不差 暂时还没有完善 会持续更新。

王洪展的博客 2091

TI IWR 6843 ISK 毫米波雷达开箱测试

TI IWR6843 ISK毫米波雷达上手体验,教程十分详细,对于新手很友好。

qq_57061492的博客 4034

BOSS直聘岗位python爬取思路1(完整代码+详细介绍)

- 爬取字段:详情链接、岗位名、岗位年限、岗位薪资范围、职位描述、岗位关键字、岗位地区、岗位地址 - 爬取工具:Python - 所需第三方库:selenium,BeautifulSoup,json - !! 注意selenium必须要提前安装和浏览器版本一样的驱动器(本人在这步卡了好久,具体请看链接:) - 思路:(这样分段有利于中途报错不需要所有都重新跑) - 先利用selenium获取每个岗位的链接 - 再遍历页面的链接获取每个岗位招聘信息的源代码 - 再利用beautifulSoup对每个岗位

麻辣清汤的博客 1万+

7、Python高光谱分析工具(PyHAT)简介

Python高光谱分析工具(PyHAT)是一个开源、跨平台的Python库及图形用户界面,用于行星光谱数据的可视化与分析。它支持多种高光谱传感器数据,如火星勘测轨道飞行器的CRISM、月船1号的M3以及SELENE Kaguya SP点光谱仪,提供预处理、衍生产品生成、统计学习和机器学习分析功能。PyHAT基于Pandas和NumPy构建,兼容Jupyter和QGIS环境,旨在解决现有光谱分析方法缺乏开源实现、难以探索性分析和算法分散的问题。其模块化架构涵盖数据输入/输出、通用光谱变换、测绘与点观测工具及高

aa123的博客 138

【OpenClaw从入门到精通】第48篇:企业“养虾”合规手册——审批备案+专网隔离+全流程管控(2026企业版)

随着OpenClaw在企业场景的规模化应用,“无审批部署、无备案运行、无隔离防护”已成为安全事件的主要诱因。本文基于启明星辰《OpenClaw类智能应用安全指引V0.1》,结合金融、能源行业头部企业落地实践,构建“审批-评估-备案-管控”全流程合规框架。核心内容包括四步审批备案流程、专网隔离部署规范、3套可直接复用的合规文档模板(使用申请单、安全评估报告、备案登记表),以及个人使用备案简化方案。通过本文,企业可建立“有据可依、有章可循”的OpenClaw管理体系,实现“专网部署、数据隔离、最小权限、全程监控

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 462

Python爬取Boss直聘,帮你获取全国各类职业薪酬榜(1)

为什么我跳过了说免费的代理?因为现在搞爬虫的人太多了,免费的基本早就列入各大网站的黑名单了。所以解析到的原始数据如下:先来看看python的薪酬榜:看一下西安的排位,薪资平均真的好低…代码import requestsfrom bs4 import BeautifulSoupimport csvimport randomimport timeimport argparsefrom pyecharts.charts import Lineimport pandas as pdclass BossCrawler

2401_84009749的博客 889

【雕爷学编程】Arduino动手做(111)---震动提醒模块

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来---小小的进步或是搞不掂的问题,希望能够抛砖引玉。

雕爷学编程 1898

2024年Python最全Python爬取Boss直聘,帮你获取全国各类职业薪酬榜(1)

代码import csvdefLinux i686;MSIE 9.0;U;U;U;U;U;WOW64;U;U;U;U;U;MSIE 9.0;U;Linux i686;U;Linux i686;U;Linux i686;U;U;en;U;U;U;U;U;Linux i686;U;Linux i686;U;U;U;U;U;U;U;U;U;U;U;nl;U;de;MSIE 8.0;U;Linux i686;U;U;U;U;U;U;U;U;

2301_82242474的博客 779

【纯实战】C#基于TCP/IP实现三菱PLC MC协议完整通信(含完整源码+通信原理+避坑指南)

MC协议是三菱电机为旗下MELSEC系列PLC量身定制的以太网专用通信协议,本质是一套基于TCP/IP的应用层协议规范,专门用于实现上位机(PC/工控机)与PLC之间的双向数据交互,支持对PLC的软元件(X/Y/M/D/W/T/C等)进行读、写、批量读写等核心操作,同时支持PLC状态查询、程序启停等控制指令。重要:三菱PLC的MC协议默认基于TCP 4999端口通信,部分新版本FX5U/Q系列也支持TCP 5000端口,核心通信逻辑一致。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 894

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Python爬取Boss直聘,帮你获取全国各类职业薪酬榜,2024年最新《Python面试题及解析》分享

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了,只是里面的项目比较多,水平也是参差不齐,大家可以挑自己能做的项目去练练。每天那么多的商家发布招聘信息,进入不了top100,别人想看都看不到你的消息,除非搜索名字。这是我花了几天的时间去把Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。Boss直聘的服务器里,留着我的痕迹,多么骄傲的事情啊。

m0_58269070的博客 644

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

上一篇: Python配置文件总结与避坑指南
下一篇: Flask开发vip版HttpServer
清风Python
博客等级 码龄7年 406粉丝 267原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值