加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Python基础+爬虫基础

发布时间:2020-12-20 12:58:29 所属栏目:Python 来源:网络整理
导读:Python基础+爬虫基础 一、python的安装: 1、建议安装Anaconda,会自己安装一些Python的类库以及自动的配置环境变量,比较方便。 二、基础介绍 1、什么是命名空间:x=1,1存在内存中,x命名空间是存放名字x与1绑定关系的地方。 2、命名空间的加载:python解释

Python基础+爬虫基础

一、python的安装:

1、建议安装Anaconda,会自己安装一些Python的类库以及自动的配置环境变量,比较方便。

二、基础介绍

1、什么是命名空间:x=1,1存在内存中,x命名空间是存放名字x与1绑定关系的地方。
2、命名空间的加载:python解释器先启动,先加载内置命名空间,然后以文件为基础,加载全局命名空间,在执行文件的过程中如果调用函数,则临时产生局部命名空间。
3、名字的查找顺序:局部命名空间——全局命名空间——内置名称空间。 在全局无法查看局部,在局部可以查看全局。

三、global与nonlocal关键字:

1、什么是闭包:内部函数包对外部作用域而非全局作用域的引用。2、闭包的意义:返回的函数对象,不仅仅是一个函数对象,在该函数外还包了一层作用域,这使得,该函数无论在何处被调用,优先使用自己外层包裹的作用域。
应用领域:延迟计算

四、装饰器:

定义:装饰他人的器具,本身可以是任意可调用对象,被修饰者也可以是任意可调用对象、
强调装饰器原则:1、不修改被装饰对象的源代码。2、不修改被装饰对象的调用方式。3、装饰器的目标:在遵循1和2的前提下,为被装饰对象添加上新功能。

五、迭代器:

迭代的工具,是一个重复的过程,每次重复一次迭代,并且每次迭代的结果都是下次迭代的初始值。
1、可迭代对象是指内置有 __iter__方法的对象和__next__方法的对象。
2、迭代器对象一定是可迭代对象,而可迭代对象不一定是迭代器对象。
3、迭代器对象的优点:提供一种统一的,不依赖于索引的迭代方式,惰性计算,节省空间。
缺点:无法获取长度(只有在next完毕才知道到底有几个值)
一次性,只能往后走,不能往前退。

六、生成器:

只要函数含有yield关键字,那么函数名()得到的结果就是生成器,并且不会执行函数内部代码。
生成器就是迭代器。


七、yield总结:

把函数做成迭代器,对比return


八、三元表达式:

name=input(‘姓名:‘)
res=‘SB‘ if name==‘alex‘ else ‘NB‘


九、匿名函数:

匿名函数没有名字 ,与函数有相同的作用域,但是匿名函意味着引用计数为0,使用一次就释放,除非让其有名字。让其有名字就没有意义。

有名字函数与没有名字函数对比:
1、有名函数:循环使用,保留了名字,通过名字就可以重复引用函数功能。

2、匿名函数:一次性使用,随时随地定义。


十、eval()用来执行字符串表达式,


十一、序列化:

把对象从内存中变成可存储或传输的过程称之为序列化,在Python中叫picking,在其他语言中叫serialization,marshalling,flattening。
1、为什么要序列化:持久保存状态。
2、跨平台数据交互

十二、面向对象高级

1、isinstance(obj,cls)和issubclass(sub,super)
isinstance(obj,cls)检查是否obj是否是类cls的对象。
issubclass(obj,cls)检查sub类是否是super的派生类
2、反射:主要是程序可以访问,检测和修改它本身状态或行为的一种能力。
python面向对象中的反射:通过字符串的形式操作对象相关的属性。python中的一切事物都是对象(都可以用反射)
#在cal_add函数前加上@property,使得该函数可直接调用,封装起来

#在cal_info函数前加上@classmethon,则该函数变为类方法,该函数只能访问到类的数据属性,不能获取实例的数据属性
#python自动传入位置参数cls就是类本身

#cls.cal_name调用类自己的数据属性

#静态方法 类或实例均可调用
#改静态方法函数里不传入self 或 cls

使用反射的好处:1、实现可插拔机制:事先定义好接口,接口只有在被完成后才会被真正的执行,即先把主要的逻辑写好,然后后期再实现接口功能。
2、动态导入模块(基于反射房钱模块成员)。

十三、 并发编程:

1、并发与并行:无论是并发还是并行在用户看来都是同时运行的,不管是进程还是线程,都是一个任务,真正干活的是CPU,CPU来做这些任务,而CPU同一时刻只能执行一个任务。

1、并发:伪并行:看起来是同时进行的,单个cpu+多道技术就可以实行并发(并行也属于并发)。
2、并行:同时进行,只有具备多个CPU才能实现并行。
单核下可以利用多道技术,多个核,每个核也可以用多道技术(多道技术主要针对的是单核)

十四、爬虫的基本操作

?

a.爬虫 -定向 -非定向 b. 1、请求网址 2、下载页面 3、筛选:正则表达式 ===================开源模块====== 1、requests pip install requests respoonse= request.get(‘http://www.baudu.com‘) response.text 总结: response= requests.get(‘URL‘) response.text response.content response.encoding response.aparent.encoding response.status.code 301永久重定向 302临时重定向 2、beautisoup模块 pip3 install beautisoup4 from bs4 import beautisoup soup=beautisoup(response.text,parser=‘html.parser‘) soup.find(id=‘auto-channel-lazyload-article‘) 总结: soup= beautisoup(‘<html>...</html>‘,features=‘html.parser‘) soup.find(‘div‘) soup.find(id=‘‘) soup.find(‘div‘,id=‘‘) 返回一个 soup.find_all(‘div‘) 返回列表 obj.text obj.attrs code: from bs4 import BeautifuSoup response=requests.get( url=‘http://www.autohome.com.cn/news‘ ) response.encoding=response.apprent_encoding soup=BeautifySoup(response.text,features=‘html.parser‘) target=soup.find(id=‘auto-channel-lazyload-article‘) #print(target) target.find(‘li‘) print(obj) 需求二:: 通过程序自动登录GitHub post_dict{ "phone":"1111","password":"xxx",""oneMonth:"1",} response=request.post{ url:‘http://response.cookies.get_dict()‘ } c.模块的详细使用 requests -参数: requests.get requests.post requests.delete requests.put requests.request( ‘POST‘... ) requests.request -method:提交方式 -url:提交地址 -params:在url中传递的参数,GET requests.request( method:‘GET‘ url=‘http://www/oldboyedu.com‘ params-{‘k1‘:‘v1‘,‘k2‘:‘v2‘} ) http://www.oldboyedu?k1=v1&k2=v2 -data 在请求体里传递数据 requests.request( method=‘POST‘ url=‘http://www.oldboyedu.com‘ json={‘use‘:‘alex‘,‘pwd‘:‘123‘} ) 请求头: content-type:application/url-form-encod... 请求体: use=alex&pwd=123 -json 在请求体中传递数据 requests.request( methond=‘POST‘ url=‘http://www.oldboyedu.com‘ params-{‘k1‘:‘v1‘,‘k2‘:‘v2‘} json={‘use‘:‘alex‘,‘pwd‘:‘123‘} ) PS:字典中嵌套字典时 两种格式请求头和请求体的格式不同 -headers 请求头: requests.request( methond=‘POST‘ url=‘http://www.oldboyedu.com‘ params-{‘k1‘:‘v1‘,‘pwd‘:‘123‘} headers={ ‘Referer‘:‘‘ #登录前的访问地址 ‘User-Agent‘:‘‘ #使用什么浏览器访问的,可以伪造 } ) -cookies

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读