-
爬数据
2017-01-05 10:52:56爬数据 1 首先安装一个chrome 的浏览器 http://103.254.64.34:9999/sw.bos.baidu.com/sw-search-sp/software/13d93a08a2990/ChromeStandalone_55.0.2883.87_Setup.exe爬数据
1 首先安装一个chrome 的浏览器
http://103.254.64.34:9999/sw.bos.baidu.com/sw-search-sp/software/13d93a08a2990/ChromeStandalone_55.0.2883.87_Setup.exe
-
python3爬虫系列09之爬虫数据存入MySQL数据库
2019-11-19 01:11:47在上一篇当中呢,python3爬虫系列08之新版动态智联爬虫,我们已经把智联招聘的某地区,某岗位,某页数的所有数据爬下来了,然后保存为了一个text文件。 这一篇呢,我们说说把数据存入数据库的操作,毕竟真的项目爬虫...python3爬虫系列09之爬虫数据存入MySQL数据库
1. 前言
在上一篇当中呢,python3爬虫系列08之新版动态智联爬虫,我们已经把智联招聘的某地区,某岗位,某页数的所有数据爬下来了,然后保存为了一个text文件。
这一篇呢,我们说说把数据存入数据库的操作,毕竟真的项目爬虫出来,数据肯定是要入库的。
反正我以前搞java的,所以还是要学习一下的关于python怎么操作数据库的?
说到数据库呢。在当今的互联网企业中,最常用的数据库模式主要有两种,即关系型数据库和非关系型数据库。
数据库现在分:SQL关系型数据库:常见的MySQL和Oracle数据库、SQL Server
NoSQL非关系型数据库:
键值存储数据库:Redis、 列存储数据库:HBase、 面向文档数据库:MongoDB、
更多请参考百度百科:数据库。
这里以Mysql为例(主要是其他我也不会啊~):
为了使python连接上数据库,你需要一个驱动,这个驱动是用于与数据库交互的库。是一个叫PyMySQL 的工具。
2.什么是 PyMySQL?
PyMySQL : 这是一个使Python连接到MySQL的库,它是一个纯Python库。
PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。
手动安装:
PyMySQL 下载地址:https://github.com/PyMySQL/PyMySQL或
命令安装:
$ pip install PyMySQLPyMySQL支持的python版本:
python2
python2.7
python3
python version >=3.4查看PyMySQL版本信息,运行以下语句:
pip show PyMySQL
图示:
算了,我不就懒得科普了。
3. 数据库建立
继续上一篇文章的爬取结果呢,我们是存入在txt中,现在要存到Mysql数据库中去。
所以,首先要打开你的mysql。
打开你自己的Mysql管理软件,我的是navicat ,然后新建一个数据库py_zljob,再新建一张表zljob,字段如下:
当然你可以运行如下SQL来自动建立:CREATE TABLE `zljob` ( `id` int(10) NOT NULL auto_increment COMMENT 'id', `jobName` varchar(30) default '' COMMENT '岗位', `city` varchar(30) default NULL COMMENT '工作地点', `workingExp` varchar(30) default NULL COMMENT '工作经验', `salary` varchar(30) default NULL COMMENT '薪资', `eduLevel` varchar(30) default NULL COMMENT '学历', `company` varchar(30) default NULL COMMENT '公司名', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=361 DEFAULT CHARSET=utf8;
这样建立好了我们用来存数据的数据表以后,就可以存数据了。
4. 撸码入库
继续上一篇文章的代码。
连接数据库前,请先确认以下事项:
• 已经创建了数据库 py_zljob.
• 在py_zljob数据库中您已经创建了表 zljob在上次的代码基础上呢,我们新建一个操作数据库的函数。
代码如下:
# 入库Mysql def save_data_sql(content): #print(type(content)) # 是生成器generator对象 try: # 打开数据库连接-填入你Mysql的账号密码和端口 conn = pymysql.connect(host='localhost',user='root',password='root',db='py_zljob') # 使用 cursor() 方法创建一个游标对象 cursor mycursor = conn.cursor() print('对应的是:',content['jobName']) sql = "INSERT INTO zljob(jobName,city,workingExp,salary,eduLevel,company) \ VALUES (%s,%s,%s,%s,%s,%s)" params = (content['jobName'],content['city'],content['workingExp'],content['salary'],content['eduLevel'],content['company']) # 调用 mycursor.execute(sql,params) #sql='select * from zljob' # 执行sql语句 conn.commit() # 获取所有记录列表 results = mycursor.fetchall() for row in results: print(row) print('成功插入', mycursor.rowcount, '条数据') except Exception: # 发生错误时回滚 conn.rollback() print('发生异常') # 关闭数据库连接 mycursor.close() conn.close()
然后在main函数中,调用写的这个函数。
运行一下:
打开数据库里面的表:
入库成功,好了,这就是我们的关于python3爬虫数据存入Mysql数据库的相关操作了。
更多关于python3使用PyMySQL对mysql增删查改工具类,请看:
下一篇是数据可视化了。源码在最后一篇哟,不要急,留下邮箱也可以发。
题外话:
注:如果你的MySQL的版本≥5.5.3,可以把编码设置为utf8mb4,utf8mb4和utf8完全兼容,但它支持最新的Unicode标准,可以显示emoji字符。
还不赶紧cmd打开,看看你的mysql?
mysql> show variables like ‘%char%’;
看到utf8字样就表示编码设置正确。
-
nodejs之简单的爬数据
2020-06-29 19:44:35nodejs 之简单爬数据 准备 cheerio 插件 cheerio 是一个为服务器特别定制的,快速、灵活、实施的 jQuery 核心实现方案。 axios 插件 axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中 代码 ...nodejs 之简单爬数据
-
准备
- cheerio 插件
cheerio 是一个为服务器特别定制的,快速、灵活、实施的 jQuery 核心实现方案。 - axios 插件
axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中
- cheerio 插件
-
代码
const fs = require("fs"); const cheerio = require("cheerio"); const axios = require("axios").default; // 发起一个网络请求获取数据 const books = []; axios .get( "https://www.17k.com/top/refactor/top100/01_subscribe/01_subscribe__top_100_pc.html" ) //此链接为17k小说网的排行榜网址 .then((res) => { const $ = cheerio.load(res.data); $(".BOX") .eq(0) // 获取指定索引位置的数据,返回一个jq实例 .find("table tr") // find 查找符合元素选择条件的数据 .each(function (index) { if (index > 0) { // 不取第一项 let book = {}; book.id = index; book.title = $(this).find("td").eq(2).find("a").text(); book.link = "https:" + $(this).find("td").eq(2).find("a").attr("href"); fs.mkdirSync("./books/" + book.title, { recursive: true, }); books.push(book); } }); fs.writeFileSync("./books.json", JSON.stringify(books)); }); ```
-
-
Scrapy爬虫(七):爬虫数据存储实例
2016-12-27 15:22:00Scrapy爬虫(七):爬虫数据存储实例Scrapy爬虫七爬虫数据存储实例 数据存储 配置mysql服务 在mysql中创建好四个item表 创建项目 运行爬虫 本章将实现数据存储到数据库的实例。 数据存储scrapy支持将数据存储到文件,...Scrapy爬虫(七):爬虫数据存储实例
本章将实现数据存储到数据库的实例。
数据存储
scrapy支持将数据存储到文件,例如csv、jl、jsonlines、pickle、marshal、json、xml,少量的数据存储到数据库还行,如果超大量的数据存储到文件(当然图片还是要存文件的),就显得不太友好,毕竟这些数据要为我所用。
因此我们通常将数据存储到数据库,本处将介绍的是最常用的数据库mysql。我们也看到scrapy中的pipeline文件还没有用到,其实这个文件就是处理spider分发下来的item,我们可以在pipeline中处理文件的存储。
- mysql库(PyMysql)的添加
打开pycharm File–>Default Settings–>Project interpreter点击左下角的“+”,搜索PyMysql,如图:
点击安装install package,如果无法安装可以选择将上面的install to user‘s site…勾选安装到Users目录下。
配置mysql服务
1、安装mysql
root@ubuntu:~# sudo apt-get install mysql-server
root@ubuntu:~# apt isntall mysql-client
root@ubuntu:~# apt install libmysqlclient-dev
期间会弹出设置root账户的密码框,输入两次相同密码。
2、查询是否安装成功
root@ubuntu:~# sudo netstat -tap | grep mysql
root@ubuntu:~# netstat -tap | grep mysql tcp6 0 0 [::]:mysql [::]:* LISTEN 7510/mysqld
3、开启远程访问mysql
- 编辑mysql配置文件,注释掉“bind-address = 127.0.0.1”
root@ubuntu:~# vi /etc/mysql/mysql.conf.d/mysqld.cnf
#bind-address = 127.0.0.1
- 进入mysql root账户
root@ubuntu:~# mysql -u root -p123456
- 在mysql环境中输入grant all on . to username@’%’ identified by ‘password’;
- 或者grant all on . to username@’%’ identified by ‘password’ with grand option;
root@ubuntu:~# grant all on *.* to china@'%' identified by '123456';
- 刷新flush privileges;然后重启mysql,通过/etc/init.d/mysql restart命令
root@ubuntu:~# flush privileges;
root@ubuntu:~# /etc/init.d/mysql restart
- 远程连接时客户端设置:
4、常见问题
- 1045 access denied for user ‘root’@’localhost(ip)’ using password yes
1、mysql -u root -p; 2、GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION; 3、FLUSH PRIVILEGES;
在mysql中创建好四个item表
创建项目
安装好PyMysql后就可以在pipeline中处理存储的逻辑了。首先创建项目:
scrapy startproject mysql
本例还是使用上一章多个爬虫组合实例的例子,处理将其中四个item存储到mysql数据库。
然后打开创建好的mysql项目,在settings.py中添加数据库连接相关的常量。# -*- coding: utf-8 -*- BOT_NAME = 'mysql' SPIDER_MODULES = ['mysql.spiders'] NEWSPIDER_MODULE = 'mysql.spiders' MYSQL_HOST = 'localhost' MYSQL_DBNAME = 'spider' MYSQL_USER = 'root' MYSQL_PASSWD = '123456' DOWNLOAD_DELAY = 1 ITEM_PIPELINES = { 'mysql.pipelines.DoubanPipeline': 301, }
其中ITEM_PIPELINES即是将pipeline加入到配置中生效。
ITEM_PIPELINES = { 'mysql.pipelines.DoubanPipeline': 301, }
pipelines.py配置
# -*- coding: utf-8 -*- # Define your item pipelines here # # Don't forget to add your pipeline to the ITEM_PIPELINES setting # See: http://doc.scrapy.org/en/latest/topics/item-pipeline.html import pymysql from scrapy import log from mysql import settings from mysql.items import MusicItem, MusicReviewItem, VideoItem, VideoReviewItem class DoubanPipeline(object): def __init__(self): self.connect = pymysql.connect( host=settings.MYSQL_HOST, db=settings.MYSQL_DBNAME, user=settings.MYSQL_USER, passwd=settings.MYSQL_PASSWD, charset='utf8', use_unicode=True) self.cursor = self.connect.cursor() def process_item(self, item, spider): if item.__class__ == MusicItem: try: self.cursor.execute("""select * from music_douban where music_url = %s""", item["music_url"]) ret = self.cursor.fetchone() if ret: self.cursor.execute( """update music_douban set music_name = %s,music_alias = %s,music_singer = %s, music_time = %s,music_rating = %s,music_votes = %s,music_tags = %s,music_url = %s where music_url = %s""", (item['music_name'], item['music_alias'], item['music_singer'], item['music_time'], item['music_rating'], item['music_votes'], item['music_tags'], item['music_url'], item['music_url'])) else: self.cursor.execute( """insert into music_douban(music_name,music_alias,music_singer,music_time,music_rating, music_votes,music_tags,music_url) value (%s,%s,%s,%s,%s,%s,%s,%s)""", (item['music_name'], item['music_alias'], item['music_singer'], item['music_time'], item['music_rating'], item['music_votes'], item['music_tags'], item['music_url'])) self.connect.commit() except Exception as error: log(error) return item elif item.__class__ == MusicReviewItem: try: self.cursor.execute("""select * from music_review_douban where review_url = %s""", item["review_url"]) ret = self.cursor.fetchone() if ret: self.cursor.execute( """update music_review_douban set review_title = %s,review_content = %s,review_author = %s, review_music = %s,review_time = %s,review_url = %s where review_url = %s""", (item['review_title'], item['review_content'], item['review_author'], item['review_music'], item['review_time'], item['review_url'], item['review_url'])) else: self.cursor.execute( """insert into music_review_douban(review_title,review_content,review_author,review_music,review_time, review_url) value (%s,%s,%s,%s,%s,%s)""", (item['review_title'], item['review_content'], item['review_author'], item['review_music'], item['review_time'], item['review_url'])) self.connect.commit() except Exception as error: log(error) return item elif item.__class__ == VideoItem: try: self.cursor.execute("""select * from video_douban where video_url = %s""", item["video_url"]) ret = self.cursor.fetchone() if ret: self.cursor.execute( """update video_douban set video_name= %s,video_alias= %s,video_actor= %s,video_year= %s, video_time= %s,video_rating= %s,video_votes= %s,video_tags= %s,video_url= %s, video_director= %s,video_type= %s,video_bigtype= %s,video_area= %s,video_language= %s, video_length= %s,video_writer= %s,video_desc= %s,video_episodes= %s where video_url = %s""", (item['video_name'], item['video_alias'], item['video_actor'], item['video_year'], item['video_time'], item['video_rating'], item['video_votes'], item['video_tags'], item['video_url'], item['video_director'], item['video_type'], item['video_bigtype'], item['video_area'], item['video_language'], item['video_length'], item['video_writer'], item['video_desc'], item['video_episodes'], item['video_url'])) else: self.cursor.execute( """insert into video_douban(video_name,video_alias,video_actor,video_year,video_time, video_rating,video_votes,video_tags,video_url,video_director,video_type,video_bigtype, video_area,video_language,video_length,video_writer,video_desc,video_episodes) value (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)""", (item['video_name'], item['video_alias'], item['video_actor'], item['video_year'], item['video_time'], item['video_rating'], item['video_votes'], item['video_tags'], item['video_url'], item['video_director'], item['video_type'], item['video_bigtype'], item['video_area'], item['video_language'], item['video_length'], item['video_writer'], item['video_desc'], item['video_episodes'])) self.connect.commit() except Exception as error: log(error) return item elif item.__class__ == VideoReviewItem: try: self.cursor.execute("""select * from video_review_douban where review_url = %s""", item["review_url"]) ret = self.cursor.fetchone() if ret: self.cursor.execute( """update video_review_douban set review_title = %s,review_content = %s,review_author = %s, review_video = %s,review_time = %s,review_url = %s where review_url = %s""", (item['review_title'], item['review_content'], item['review_author'], item['review_video'], item['review_time'], item['review_url'], item['review_url'])) else: self.cursor.execute( """insert into video_review_douban(review_title,review_content,review_author,review_video,review_time, review_url) value (%s,%s,%s,%s,%s,%s)""", (item['review_title'], item['review_content'], item['review_author'], item['review_video'], item['review_time'], item['review_url'])) self.connect.commit() except Exception as error: log(error) return item else: pass
在上面的pipeline中我已经做了数据库去重的操作。
运行爬虫
pycharm运行run.py,mysql数据库表中已经存好了我们要的数据。
-
网页爬数据方法记录
2019-02-27 15:53:05记录网上爬数据的方法 下面是对某网站获取酒店名称的例子 被爬的网址:http://www.liemingwang.com/dpmz/4958.html /** *大致思路:确认数据位置或特定的id/class,通过分析原始数据和目标数据的差别,寻找规则或者... -
R语言 爬数据
2016-11-30 23:44:55爬数据的两大难点: 1.分析网络结构 2.写正则表达式 科普版: install.packages("RCurl") library(RCurl) url1='http://shenzhen.lashou.com/cate/meishi' web=readLines(url1,encoding='UTF-8') goods_name... -
Python爬虫数据写入操作
2017-09-16 10:14:49Python Scrapy爬虫数据写入操作 在我们写完一个爬虫项目,得到了一大堆的数据,为了以后的分析和使用,我们需要把我们得到的数据进行保存。保存数据的方式主要有:保存到数据库,保存到CSV文件,保存为JSON文件。 ... -
爬虫数据储存—CSV文件
2019-10-31 10:39:23爬虫数据储存—CSV文件 一、什么是CSV文件 逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。 二、CSV文件特点:... -
python简单代码实现爬虫,爬数据,刷访问
2018-01-09 18:24:03python作为人工智能或者大数据的宠儿,我自然要学习,作为一个小白,第一个实现的工能就是爬虫,爬数据,收集数据,我以我爬csdn博客的事情为例子,附上代码,大家一起学习 这里还使用了ip代理基数,一起奉献了 #!... -
java爬虫(jsoup)如何设置HTTP代理ip爬数据
2018-07-05 10:42:00现在爬数据越来越难,各种反爬,简单的网站没做什么反爬,就随便介绍下: 1.随便找点网站弄点免费的http代理ip,去爬一下,太简单就不介绍了,目前最好用的代理ip是蘑菇代理 具体说下,稍微有点爬虫技术含量的吧,... -
Python爬虫数据提取方式——使用bs4提取数据
2018-06-28 11:53:17爬虫网络请求方式:urllib(模块), requests(库), scrapy, pyspider(框架)爬虫数据提取方式:正则表达式, bs4, lxml, xpath, css测试HTML代码:首先导入from bs4 import BeautifulSoup序列化HTML代码# 参数1:序列化... -
爬虫数据存储—数据库和MySQL
2019-10-31 15:56:46爬虫数据存储—数据库 一、什么是数据库? 数据库是一个以某种有组织的方式存储的数据集合。简单来说,我们可以将数据库想象为一个文件柜,文件柜里面有很多文件,这些文件我们称之为表。 举一个实际例子:比如说... -
如何用Python爬数据?(一)网页抓取
2018-03-04 00:00:00你期待已久的Python网络数据爬虫教程来了。本文为你演示如何从网页里找到感兴趣的链接和说明文字,抓取并存储到Excel。(由于微信公众号外部链接的限制,文中的部分链接可能无法正确打开。如有需要,请点击文末的... -
1.爬虫数据提取——方法总结
2019-10-21 15:55:04爬虫数据提取——方法总结 在获取了我们想要的html页面之后,接下来的问题就是如何将我们需要的数据给提取下来,一般来说有三种方式,分别是Xpath语法,正则表达式和bs4库,只要掌握了这三种方法,可以说html页面上... -
2.爬虫数据提取——Xpath环境配置
2019-10-21 14:01:18爬虫数据提取——Xpath环境配置 一、什么是Xpath语法? xpath(XML Path Language)是一门在XML和HTML文档中查找信息的语言,可用来在XML和HTML文档中对元素和属性进行遍历。简单来说,我们的数据是超文本数据,想... -
Python 3.7 实现一个简单爬虫,简单爬数据,抓取数据,一行行代码教程你,总能教会你
2020-05-13 11:38:48目录简单介绍Beautiful Soup教...因此,了解 web 页面结构对于爬数据是必要的。 Beautiful Soup Beautiful Soup【 文档 】 是一个可以从HTML或XML文件中提取数据的 Python 库。它能够通过你喜欢的转换器实现惯用的文档 -
python爬数据,天气预报 返回403
2019-01-10 14:07:20爬数据的时候,一般网站获取数据访问的动态js文件是可以直接访问的,用普通 request = urllib.request.urlopen(url) res = request.read() 就可以获取 而有的不能直接获取,返回403报错,意思是访问不到, 而... -
我们用爬虫爬数据的时候,怎么应对反爬虫,尤其是应对阿里的反爬虫
2015-11-07 06:37:04我们用爬虫爬数据的时候,怎么应对反爬虫,尤其是应对阿里的反爬虫 -
不会编程也能爬数据!3个爬虫小工具教你实现~
2017-11-19 00:00:00本文为你分享3个爬数据的小工具,零技术基础也能学会呦! 当前的主流爬虫手段是用Python编程,Python的强大毋庸置疑,但初学者学习Python还是需要一两个月时间的。有没有一些更简单的爬取数据方法呢?答案是有... -
爬虫数据的获取
2018-08-07 11:51:16我们学会了使用爬虫当然少不了网页的解析,首先我们打开一个浏览器输入你选好的网站,按下F12可以查看网页的内容和我们想要的报头,但是很不幸的是你打开之后发现没有数据,如下所示 这是由于你没有刷新,你点击... -
Python爬数据
2017-08-19 18:23:33最近很多人问怎么抓网页数据,据我所知,常见的编程语言(C++,java,python)都可以实现抓网页数据,甚至很多统计\计算的语言(R,Matlab)都有可以实现和网站交互的包。本人试过用java,python,R抓网页,感觉语法各有差异... -
4.爬虫数据提取——lxml库的环境配置
2019-10-21 20:27:33爬虫数据提取——lxml库的安装 一、什么是lxml? 在我们获取html页面之后,可以使用xpath语法进行数据提取,但是,直接在获取的content里面使用xpath语法进行数据提取吗?显然不是的,获取的内容仅仅只是一个包含... -
教你如何从Google Map爬数据(切片)
2018-06-09 19:25:34转:http://blog.csdn.net/JairusChan在这篇博文中,笔者从实验的角度,从爬数据的困难出发,阐述如何从Google Map上爬地图数据。本文的出发点为实验,而非商用。Google Map对其自己的数据具有其权益,希望读者以... -
爬虫爬数据时,post数据乱码解决办法
2014-11-13 20:41:20用谷歌自带的抓包工具也不能捕获到数据。于是下了Fiddler。 Fiddler的爬取结果如下: 可见,除了头信息之外,下面的数据信息显示成了乱码。这样就不能用程序模拟浏览器发送数据了。 解决办法之一就是... -
steam爬虫数据抓取
2018-12-03 17:14:12不废话,直接上代码,要借鉴的自己看,不想写的可以直接联系我 # -*- coding: utf-8 -*- """ File Name: main Description : Author : mengzhihao ... -
1分钟轻松爬数据(web scraper插件使用教程)
2019-01-25 14:03:031分钟轻松爬数据(web scraper插件使用教程) 前提你已安装web scraper(Google,FireBox商店都有)。 说明:安装后右键查看元素或检查即可看到web scraper,简介如图. 刚开始只能点第一个(显示你自己建的要爬的所有... -
pathon爬数据和采集工具(如八爪鱼)爬数据的应用场景------R
2019-06-02 17:24:40利用requests.text获取html源码,所需的数据在控台上显示了,就不是动态数据,就可以用requests和BeautifulSoup这个包来爬去数据;如果是没有在控台显示,那就就是动态加载的数据,要打开网页了才能获取到想要的数据... -
教你如何从Google Map爬数据
2012-04-25 11:58:14在这篇博文中,笔者从实验的角度,从爬数据的困难出发,阐述如何从Google Map上爬地图数据。本文的出发点为实验,而非商用。Google Map对其自己的数据具有其权益,希望读者以博文为学习实验之用,不要将自己所爬到的... -
爬虫数据抓包
2017-02-01 12:46:50抓包分析是爬虫研发的最基础和关键的步骤。要足够细心和耐心,开发时应采取循序渐进的步骤,并在每个关键环节留有日志输出,方便爬虫问题的问题跟踪与追根溯原。
-
Java学习路线,好的学习路线和好的方法,能让我们少走些弯路
-
BUU-Reverse模块练习WP
-
《马克思主义基本原理》考试大纲_Touale的博客-CSDN博客.pdf
-
LMS511操作手册-中文.pdf
-
将两条宽带通过两个路由器组成一个局域网的方法.zip
-
Discourse 如何设置 API 的 key
-
PostgreSQL-11.10-osr507-Binary.tar.gz
-
"万年历" C语言 新手
-
【Leetcode】1590. Make Sum Divisible by P
-
InsightToolkit-5.1.2.zip
-
Latex学习笔记(七)参考文献模板
-
为解决cpu与主存的速度匹配可采用什么
-
迈向高级的Java面试突围课
-
【数据分析-随到随学】Python语法强化与数据处理
-
FFmpeg4.3系列之26:视频监控之H265多路摄像头播控项目实战
-
基于X210的裸机时钟温度显示器-第3/3季
-
googlenews-vectors-negative300.bin.gz压缩包下载链接.txt
-
朱有鹏老师嵌入式linux核心课程2期介绍
-
Redis数据库入门与使用
-
windows xp3 sam