0%

1,Scrapy的安装配置(根据个人实际情况,每个人项目不一样)
①,先安装将twisted文件放到E盘根目录下
#前提必须安装wheel模块,为了安装whl文件
②,E:—>pip install Twisted-18.4.0-cp36-cp36m-win_amd64.whl
③,pip install scrapy==1.5.0

2,在E盘创建Scrapy工程:
E: —> scrapy startproject doubanmovie —>
cd doubanmovie —>scrapy genspider moviespider douban.com

3,爬虫主程序的编写:
在Pycharm工具打开doubanmovie下级目录的doubanmovie
①,添加浏览器标识
将rotate_useragent文件放到doubanmovie文件夹下
②,在settings中的DOWNLOAD_MIDDLEWARES中添加配置信息
添加禁用框架自带的浏览器标识及设置浏览器标识
#禁用框架自带的浏览器标识
‘scrapy.contrib.downloadermiddleware.useragent.UserAgentMiddleware’: None,
#设置浏览器标识
‘doubanmovie.rotate_useragent.RotateUserAgentMiddleware’:400
②-①,编写settings,py,启动管道组件,ITEM_PIPELINES 以及其他相关设置

③,编写主程序

④,执行
scrapy crawl (spiders下文件,不包含后缀)

注意:设置浏览器标识时,第一个应为项目名

爬虫爬取数据流程(scrapy)
1,scrapy startproject XXXX
2,scrapy genspider XXXX “http://www.XXXX.com”
3,编写item.py,明确需要提取的数据
4,编写spiders/xxxx.py ,编写爬虫文件,处理请求和响应,以及提取数据(yield item )
5,编写pipelines.py , 编写管道文件,处理spider返回item,比如本地持久化存储等…
6,编写settings,py,启动管道组件,ITEM_PIPELINES 以及其他相关设置
7,执行爬虫

阅读全文 »

视频链接

环境安装说明:

安装链接:

  [ROS安装](https://www.guyuehome.com/33971)

类似错误修复链接:

[大部分错误针对修改有效](https://blog.csdn.net/qq_44830040/article/details/106049992)

安装步骤:

1,配置Ubuntu系统
打开软件中心,允许以下三种软件源
①restricted(不完全的自由软件)
②universe(Ubuntu官方不提供支持与补丁,全靠社区支持)
③multiverse(非自由软件,完全不提供支持和补丁)这三种软件源
下载地址:Download from为阿里云
http://mirrors.aliyun.com/ubuntu

2,打开终端,添加软件源
sudo sh -c ‘echo “deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main” > /etc/apt/sources.list.d/ros-latest.list’

2.1

        使用国内的镜像源,提高下载速度:(以下任意一个)

             sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ $DISTRIB_CODENAME main" > /etc/apt/sources.list.d/ros-latest.list'

             sudo sh -c '. /etc/lsb-release && echo "deb http://mirror.sysu.edu.cn/ros/ubuntu/ $DISTRIB_CODENAME main" > /etc/apt/sources.list.d/ros-latest.list'

            sudo sh -c '. /etc/lsb-release && echo "deb http://ros.exbot.net/rospackage/ros/ubuntu/ $DISTRIB_CODENAME main" > /etc/apt/sources.list.d/ros-latest.list'
阅读全文 »

1, __new__和__init__的区别
①__new__负责进行对象的创建,__init__负责进行对象的初始化
②__new__是在实例创建之前被调用,用于创建实例,然后返回该实例对象,是个静态方法,__init__是当实例对象创建完成之后被调用,用于初始化一个类实例,是个实例方法
③__new__至少有一个参数cls,必须要有返回值,返回的是实例化出来的实例,__init__在__new__基础上完成一些其他初始化的动作,__init__不需要有返回值

2,面向对象?
简称oop,把对象当做一个程序的基本单元,一个对象包含数据和操作数据的函数,提高了编程的效率,使其编程的重用性增高.
三大特点:
封装:把需要重用的函数或功能封装起来,方便其他程序直接调用,
继承 :子类继承父类,子类和父类拥有相同的方法和属性,子类会覆盖父类的方法和属性
多态:提高函数的健壮性和可扩展性,父类声明指向子类实现
多态的实现方式:
①对象多态: 在继承体系中,定义时的类型和运行时的类型不一样,此时构成多态
②类多态 : 只通过@classmethod形式多态构成的构造对象,而不是使用python默认的__init__构造器

3,如何提高Python的运行效率?
①使用生成器,节省大量内存
②针对循环优化,避免过多重复代码的执行
③多个if else条件判断,可以把最有可能发生的条件放最前面写,减少程序判断次数,提高效率

4,描述数据,链表,队列,堆栈的区别?
答:数组和链表是数据存储方式的概念,数组在连续的自然空间中存储,链表在非连续的自然空间中存储
队列和堆栈是描述数据存储方式的概念,
队列是先进先出,堆栈是后进先出,堆栈和队列可以用数组表示,也可以用链表表示,
堆和栈
内存:
栈:内存小,速度快,有序,简单的数据类型放到栈里
堆:内存大,速度慢,无序,复杂的数据类型放到堆里

5,*args和**kw区别?
*args和**kw属于不定长参数
*args返回值为元组类型,**kw返回值为字典类型

6,=和==的区别?
=:表示赋值.将某一数值赋值 给变量
==:表示判断是否相等,返回True或者False,相等True,不相等False

7,TCP/UDP/HTTP/HTTPS的区别?
TCP协议:是一种面向连接,可靠的,基于字节流的传输层协议,在正式通信前必须和对方建立连接,一个tcp必须经过三次对话才能建立连接,在经历4次对话结束(即三握四挥),传输可靠,速度慢,应用,传输大量数据,对可靠性要求高

UDP协议:用于www浏览的协议,特点是客户端发送的请求都需要服务器回送响应,在请求结束后会主动释放连接,从建立连接到关闭连接的过程成为”一次连接” 注: 1)在http1.0中客户端的每次请求都要求建立一次单独的连接,在处理完本次请求后就自动释放连接 2)在http1.1中,则可以在一次连接中处理多次请求,并可重叠进行,不需要等一个请求结束后再发下一个请求

HTTP/HTTPS协议 HTTP协议:超文本传输协议,是一个基于请求与响应,无状态的,应用层的协议,常基于TCP/IP协议传输数据,互联网上应用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个标准。设计HTTP的初衷是为了提供一种 发布和接收HTML页面的方法。
HTTPS协议: HTTPS是一种通过计算机网络进行安全通信的传输协议,经由HTTP进行通信,利用SSL/TLS建立全信道,加密数据包。HTTPS使用的主要目的是提供对网站服务器的身份认证,同时保护交换数据的隐私与完整性。
HTTP 明文传输,数据都是未加密的,安全性较差,HTTPS(SSL+HTTP) 数据传输过程是加密的,安全性较好。

8, http1.0与2.0,3.0的区别
http1.0存在连接无法复用问题,导致每发送一次请求都需要进行三次握手的过程,重新建立连接,效率太低,存在堵塞问题 ,http1.0是下一次请求的发送必须等到上一个请求返回后才会进行,如果上一个请求没有返回,name后面的请求就会全部堵塞,最后就是安全问题,http1.0所传输的内容都是明文的,无法保证数据的安全性.
http2.0比较专注性能,它采用二进制格式传输数据,http2.0也采用了多路复用的技术,他可以只通过一个TCP连接传输所有的请求数据,还有就是采用了头部压缩技术,这也解决了http1.0的header里携带的内容过大的问题,在一定程度上减轻了传输的成本,不过它也存在一定的问题,如果在传输的过程中存在丢包的情况的话,那么整个tcp就得重新传输,后面资源就会被堵塞.
http3.0放弃了tcp协议,改用了QUIC协议,此协议基于传输层UDP协议,UDP协议无需三次连接四次挥手,所以传输速率更高,如果出现丢包,只需要重发丢掉的包就可以.

阅读全文 »

1, Chinese: 汉化
2, translation: 翻译
3, Rainbow Brackets: 括号高亮
4, json parser: json格式的数据显示
5, markdown image support: markdown文档编辑器
6, Aixcoder code complate: 自动补全
7,CSV plugin
8,wakatime
9, .ignore
10, Context Free Grammar
11, SonarLint
12, Key Promoter X
13, Indent Rainbow
14, CodeGlance

阅读全文 »

numpy模块
1,数组的创建语法:
一维数组:

/ : 表示或者

arr = np.array(列表/range(5))

二维数组:
arr2 = np.array([[1,2,3,4],[5,6,7,8]])

2,shape:一个表示各维度大小的数组组arr2的维度:arr2.shape
,查看各数组的结构(几行几列)

3,dtype:一个用于说明数组数据类型的对象
arr2的数组类型:arr2.dtype
4,10代表一维数组的元素个数:arr_zeros = np.zeros(10)

5, 3,一维数组的个数,6,每个数组的元素个数:arr_ones = np.ones((3,6))

6, 2代表三维度值在数组中的个数,3代表二维度值在数组中的个数,2代表一维度值在数据中的个数 :
arr_empty = np.empty([2,4])

7, np.arange(5) :构建一维数组[0,1,2,3,4] —>序列数组
np.array([[6,7,8,9],np.arange(4)]) :构建二维数组[[6,7,8,9][0,1,2,3,4]]

8,(matrix)矩阵的创建(一般表示二维数组)
np.matrix(np.arange(5)) np.maxtrix([[6,7,8,9],np.arange(4)])

阅读全文 »