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','k2':'v2'}
json={'use':'alex','pwd':'123'}
headers={
'Referer':'' #登录前的访问地址
'User-Agent':'' #使用什么浏览器访问的,可以伪造

}
)
-cookies

Python基础+爬虫基础的更多相关文章

  1. python从爬虫基础到爬取网络小说实例

    一.爬虫基础 1.1 requests类 1.1.1 request的7个方法 requests.request() 实例化一个对象,拥有以下方法 requests.get(url, *args) r ...

  2. Python扫描器-爬虫基础

    0x1.基础框架原理 1.1.爬虫基础 爬虫程序主要原理就是模拟浏览器发送请求->下载网页代码->只提取有用的数据->存放于数据库或文件中 1.1.基础原理 1.发起HTTP请求 2 ...

  3. Python BeautifulSoup4 爬虫基础、多线程学习

    针对 崔庆才老师 的 https://ssr1.scrape.center 的爬虫基础练习.Threading多线程库.Time库.json库.BeautifulSoup4 爬虫库.py基本语法

  4. 自学Python六 爬虫基础必不可少的正则

    要想做爬虫,不可避免的要用到正则表达式,如果是简单的字符串处理,类似于split,substring等等就足够了,可是涉及到比较复杂的匹配,当然是正则的天下,不过正则好像好烦人的样子,那么如何做呢,熟 ...

  5. Python归纳 | 爬虫基础知识

    1. urllib模块库 Urllib是python内置的HTTP请求库,urllib标准库一共包含以下子包: urllib.error 由urllib.request引发的异常类 urllib.pa ...

  6. 自学Python四 爬虫基础知识储备

    首先,推荐两个关于python爬虫不错的博客:Python爬虫入门教程专栏   和 Python爬虫学习系列教程 .写的都非常不错,我学习到了很多东西!在此,我就我看到的学到的进行总结一下! 爬虫就是 ...

  7. 自学Python五 爬虫基础练习之SmartQQ协议

    BAT站在中国互联网的顶端,引导着中国互联网的发展走向...既受到了多数程序员的关注,也在被我们所惦记着... 关于SmartQQ的协议来自HexBlog,根据他的博客我自己也一步一步的去分析,去尝试 ...

  8. python 网页爬虫 基础篇

    首先要连接自己的数据库 import pymysql import requests #需要导入模块 db = pymysql.connect('localhost', 'root', '****** ...

  9. Python爬虫基础

    前言 Python非常适合用来开发网页爬虫,理由如下: 1.抓取网页本身的接口 相比与其他静态编程语言,如java,c#,c++,python抓取网页文档的接口更简洁:相比其他动态脚本语言,如perl ...

随机推荐

  1. (转)C#的 GC工作原理基础

    作为一位C++出身的C#程序员,我最初对垃圾收集(GC)抱有怀疑态度,怀疑它是否能够稳定高效的运作:而到了现在,我自己不得不说我已经逐渐习惯并依赖GC与我的程序“共同奔跑”了,对“delete”这个习 ...

  2. Python字符串魔法方法

    isalpha()判断是否权威字母或者汉字 isdecimal()(十进制小数)    isdigit()  判断是否为数字 特殊数字 isdigit()判断更为厉害   也是判断数字  都返回Tru ...

  3. SciPy 基础功能

    章节 SciPy 介绍 SciPy 安装 SciPy 基础功能 SciPy 特殊函数 SciPy k均值聚类 SciPy 常量 SciPy fftpack(傅里叶变换) SciPy 积分 SciPy ...

  4. MySQL 通过SQL语句导出表为文件

    SELECT * //你要导出的字段 FROM `tabel` //表名 INTO OUTFILE "D:\\file.txt" //导出的文件路径和文件名 LINES TERMI ...

  5. Lua生成比较理想的随机数的方法

    lua需要生成随机数的需求也是很常见的,为了生成看起来更随机的数字,我们需要注意以下几点 我们也需要给随机数设置随机数种子:math.randomseed(xx) lua对随机数种子也是有一定要求的: ...

  6. vue-router 一个十分简单的应用场景

    时间:2018-03-28 关于vue-router: 这里只大致说一下构建过程和使用情况,将就看看!! 我使用的是vue-cli脚手架+webpack构建的项目 安装vue-cli脚手架 npm i ...

  7. php 文件缓存 include vs serialize vs json_encode

    大神:http://techblog.procurios.nl/k/news/view/34972/14863/cache-a-large-array-json-serialize-or-var_ex ...

  8. https://blog.csdn.net/yyoinge/article/details/81557604

    https://blog.csdn.net/yyoinge/article/details/81557604 http://www.mamicode.com/info-detail-2346464.h ...

  9. http https 干货

    HTTPS原理  在谈HTTPS原理之前,首先了解一下Http和Https的区别.     Http(全称:Hyper Text Transfer Protocol),一般称为超文本传输协议,也是互联 ...

  10. NirSoft 实用程序

    64-bit (x64) utilities package 此软件包包含NirSoft中的所有实用程序,这些实用程序具有64位版本(x64)Windows的独立构建. 此程序包包含下面列表中每个实用 ...