python基础常识

1. if __name__=='__main__'

     __name__表示当前模块名,当模块被运行是模块名为__main__,也是当前模块,当模块被导入是,模块名就不是__main__,即当前代码不会被运行

2.python内存管理机制

  a.引用计数机制

  b.垃圾回收机制

  c.内存池机制

重新赋值,即会触发垃圾回收机制

内存满了的情况下会触发

3.删除一个列表的重复元素(三种方法)

4.浅拷贝与深拷贝

浅拷贝只拷贝对象本身, 对象(如 list, dict)中的子元素不会被拷贝,而是依旧引用原对象。深拷贝会将对象即其中的包含的子元素全部拷贝一份。

5.except的用法以及作用

try.....except....else

except区域是用来捕获所有异常的

6.__new__与__init__的区别

__init__创建对象后调用,对当前对象实例化,没有返回值

__new__创建对象时调用,返回当前对象的实例,可以用__new__实现单例

7.常用的网络爬虫方法

正则,lxml,beautiful soup

8.遇到过的反爬虫机制及相应的反反爬虫措施

a:

通过header反爬虫

基于用户行为限制(在一个时间段内访问次数过多)

动态网页的加载,(js,ajax)

数据的加密

b:

自定义添加header数据,(user_Agent,cookie等)

使用代理池ip去轮番请求

对动态网页的使用selenium + phantomjs去抓取

可以使用selenium截屏,并使用自带的pytesseract的库区识别,或者直接查找源代码,了解加密方式去解密

9.urllib与urllib2的区别

urllib与urllib2都是接受url请求的相关模块,但是urllib2可以接受request实例

10.网络爬虫所用到的网络数据包,解析包

网络数据包:urllib、urllib2、requests

解析包:re,lxml,beautiful soup,xpath

11.django与flask的区别

Flask:

1.flask自由,灵活,可扩展性强,第三方库的选择广,开发可以使用自己喜欢的轮子,也能结含最流行的以及强大的python库

2.入门简单,及没有web开发经验,也能很快做出网站

3.非常适用与小型网站

4.非常适用于web服务的API

5.开发大网站无压力,但架构需自己设计,开发成本取决于开发者的能力

6.fkask与关系库数据库的配合适用不弱于django,而与nosql数据库的配合远远优于django

7.flask比django更加pythonic,与python的philosophy更加吻合

django:

1.django是一款重量级的web开发框架,自带的ORM和模板引擎,灵活与自由度不够

2.不适合开发小型网站,毕竟功能太强大了

3.django自带的ORM非常优秀,综合评价略高于SALAlchemy

12.Linux部署服务脚本命令

13.你用过多线程和异步嘛?除此之外你还用过什么方法来提高爬虫效率?

使用scrapy-redis分布式爬取

对于定向爬取可以用re代替xpath

14.post与get的区别

1.get重点在于向服务器请求数据,而post在于向服务器发送数据

2.get通过url传输数据,以字段=值的形式置于url后端,post通过http post机制将字段=值封存请求实体中,发送给服务器。

3.get传输可见,post传输不可见,所以post传输安全

4.get传输量小,但效率高,post传输量大,效率慢

15.什么是lambda函数,有什么好处

猜你喜欢

转载自blog.csdn.net/weixin_42408100/article/details/81189772
今日推荐