<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/baiwei9609</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; baiwei9609]]></copyright><item><title><![CDATA[反射]]></title><link>https://blog.youkuaiyun.com/baiwei9609/article/details/101654054</link><guid>https://blog.youkuaiyun.com/baiwei9609/article/details/101654054</guid><author>baiwei9609</author><pubDate>Sat, 28 Sep 2019 17:31:00 +0800</pubDate><description><![CDATA[反射主要是指程序可以访问、检测和修改它本身状态或行为的一种能力
python面向对象中的反射：通过字符串的形式操作对象相关的属性。
1.getattr\hastattr\setattr\delattr
class Foo:
    f = '类的静态变量'
    def __init__(self,name,age):
        self.name=name
        se...]]></description><category></category></item><item><title><![CDATA[网络基础]]></title><link>https://blog.youkuaiyun.com/baiwei9609/article/details/101654057</link><guid>https://blog.youkuaiyun.com/baiwei9609/article/details/101654057</guid><author>baiwei9609</author><pubDate>Fri, 27 Sep 2019 11:18:00 +0800</pubDate><description><![CDATA[一、软件开发的架构
我们了解的涉及到两个程序之间通讯的应用大致可以分为两种：
第一种是应用类：qq、微信、网盘、优酷这一类是属于需要安装的桌面应用（CS架构）
第二种是web类：比如百度、知乎、博客园等使用浏览器访问就可以直接使用的应用（BS架构）
1.1C/S架构
​ C/S即：Client与Server ，中文意思：客户端与服务器端架构，这种架构也是从用户层面（也可以是物理层面）来划...]]></description><category></category></item><item><title><![CDATA[面向对象3-继承]]></title><link>https://blog.youkuaiyun.com/baiwei9609/article/details/101654052</link><guid>https://blog.youkuaiyun.com/baiwei9609/article/details/101654052</guid><author>baiwei9609</author><pubDate>Tue, 24 Sep 2019 09:29:00 +0800</pubDate><description><![CDATA[一、多继承
MRO即 method resolution order (方法解释顺序)，主要用于在多继承时判断属性的路径。
python新式类的多继承顺序采用c3算法
如果继承至一个基类:
class B(A)
这时B的mro序列为[B,A]
如果继承至多个基类
class B(A1,A2,A3 ...)
这时B的mro序列 mro(B) = [B] + merge(mro(A1), m...]]></description><category></category></item><item><title><![CDATA[面向对象2-类实例化与单例模式]]></title><link>https://blog.youkuaiyun.com/baiwei9609/article/details/101654055</link><guid>https://blog.youkuaiyun.com/baiwei9609/article/details/101654055</guid><author>baiwei9609</author><pubDate>Sun, 22 Sep 2019 17:42:00 +0800</pubDate><description><![CDATA[一、类实例化一个对象的过程
class Foo(object):
    def __init__(self,x):
        self.x = x  
f = Foo(x)       
&gt;&gt;&gt;Foo.__class__
&lt;class 'type'&gt;
所以Foo是类型type的一个对象,Foo是一个类，但是Python中的类也是对象！类、函数、方法以...]]></description><category></category></item><item><title><![CDATA[面向对象1——类的成员]]></title><link>https://blog.youkuaiyun.com/baiwei9609/article/details/101654050</link><guid>https://blog.youkuaiyun.com/baiwei9609/article/details/101654050</guid><author>baiwei9609</author><pubDate>Sat, 21 Sep 2019 22:50:00 +0800</pubDate><description><![CDATA[面向对象1——类的成员
面向对象三大特征：1.封装 2.继承 3.多态
opp就是可以做到分解代码、最小化代码冗余以及对现有的代码进行定制再编写程序，而不是实地修改代码，或从头开始
一、类的成员：
1.字段：普通字段，静态字段
2.方法:普通方法，类方法，静态方法
3.属性
class Person:
    country = 'CN'     #静态字段
    __money = ...]]></description><category></category></item><item><title><![CDATA[装饰器1]]></title><link>https://blog.youkuaiyun.com/baiwei9609/article/details/101654053</link><guid>https://blog.youkuaiyun.com/baiwei9609/article/details/101654053</guid><author>baiwei9609</author><pubDate>Thu, 19 Sep 2019 12:13:00 +0800</pubDate><description><![CDATA[装饰器的本质：一个闭包函数
装饰器的功能：在不修改原函数及其调用方式的情况下对原函数功能进行扩展
开放封闭原则
程序实体应该是可扩展，而不可修改的。也就是说，对扩展是开放的，而对修改是封闭的。
而装饰器就很好的适应这个原则
装饰器运用到的知识
函数中嵌套函数；函数返回一个函数；将函数作为参数传给另⼀个函数。
def sayhi():
    print('hi')
def saybefo...]]></description><category></category></item><item><title><![CDATA[可迭代对象、迭代器和生成器]]></title><link>https://blog.youkuaiyun.com/baiwei9609/article/details/101654048</link><guid>https://blog.youkuaiyun.com/baiwei9609/article/details/101654048</guid><author>baiwei9609</author><pubDate>Sat, 14 Sep 2019 20:40:00 +0800</pubDate><description><![CDATA[迭代(Iteration)
​ 当我们使⽤⼀个循环来遍历某个东西时，这就叫⼀个迭代。
可迭代对象(Iterable)
​ ⼀个可迭代对象是Python中任意的对象，只要它定义了可以返回⼀个迭代器的__iter__
⽅法，或者定义了可以⽀持下标索引的__getitem__⽅法。简单说，⼀个可迭代对象，就是任意的对象，只要它能给我们提供⼀个迭代器。
container__iter__() 返...]]></description><category></category></item><item><title><![CDATA[函数3——高级话题]]></title><link>https://blog.youkuaiyun.com/baiwei9609/article/details/101654001</link><guid>https://blog.youkuaiyun.com/baiwei9609/article/details/101654001</guid><author>baiwei9609</author><pubDate>Fri, 13 Sep 2019 21:12:00 +0800</pubDate><description><![CDATA[递归函数
直接或间接地调用自身以进行循环的函数
L = [1,[2,3,[4,5,6,[7,8,9,10]]]]
def sumtree(L):
    t = 0
    for i in L:
        if not isinstance(i,list):
            t += i
        else:
            t += sumtree(i)
...]]></description><category></category></item><item><title><![CDATA[验证码处理+cookie模拟登录]]></title><link>https://blog.youkuaiyun.com/baiwei9609/article/details/101654002</link><guid>https://blog.youkuaiyun.com/baiwei9609/article/details/101654002</guid><author>baiwei9609</author><pubDate>Wed, 11 Sep 2019 10:57:00 +0800</pubDate><description><![CDATA[一、背景
相关博文：https://www.jianshu.com/p/9fce799edf1e
https://blog.youkuaiyun.com/h19910518/article/details/79348051
Cookie
​ HTTP协议它是无状态的，就是说这一次请求和上一次请求是没有任何关系的，没有关联的。这种无状态的的好处是快速。但是有时我们希望几个请求的页面要有关联，比如：在a...]]></description><category></category></item><item><title><![CDATA[基于requests模块的代理]]></title><link>https://blog.youkuaiyun.com/baiwei9609/article/details/101653999</link><guid>https://blog.youkuaiyun.com/baiwei9609/article/details/101653999</guid><author>baiwei9609</author><pubDate>Mon, 09 Sep 2019 12:48:00 +0800</pubDate><description><![CDATA[1.什么是代理？
​ 代理：将网络请求发送给代理服务器，通过代理服务器做中介，将请求转发给目标服务器并将响应返回，从而完成网络通信。
2.为什么使用代理？
​ 使用爬虫抓取批量资源时，在短时间内会对服务器发起高频请求，服务器会判定这些高频请求不是“普通访客”发起的，从而拒绝该IP的发起的请求，但是我们可以更换IP(使用代理IP)继续进行访问
3.代理的基础知识

​ 代理的类型：http...]]></description><category></category></item><item><title><![CDATA[编码错误解决]]></title><link>https://blog.youkuaiyun.com/baiwei9609/article/details/101654024</link><guid>https://blog.youkuaiyun.com/baiwei9609/article/details/101654024</guid><author>baiwei9609</author><pubDate>Mon, 09 Sep 2019 12:28:00 +0800</pubDate><description><![CDATA[1.先在浏览器中检查charset 例如&lt;meta charset="utf-8"&gt;，'utf-8'比较常见，也有“gbk”,
​ 对get返回的对象的编码，进行相应的调整
2.尝试使用content属性代替text
3.对于局部乱码（多为中文），例如img标签中的“alt"属性可尝试使用‘’iso-8859-1"进行编码，然后使用‘’gbk"进行 解码
import req...]]></description><category></category></item><item><title><![CDATA[函数2——参数]]></title><link>https://blog.youkuaiyun.com/baiwei9609/article/details/101654022</link><guid>https://blog.youkuaiyun.com/baiwei9609/article/details/101654022</guid><author>baiwei9609</author><pubDate>Sat, 07 Sep 2019 11:47:00 +0800</pubDate><description><![CDATA[1.位置参数：从左至右进行匹配
2.关键字参数：通过参数名进行匹配
3.默认参数：为没有传入值的参数定义参数值
4.可变参数（动态传参）：收集任意多基于位置或关键字的参数
参数出现顺序
​ 在函数中，参数出现顺序为：位置参数、关键字参数、默认参数(函数定义时)、任意长度的位置参数、任意长度的关键字参数
位置参数和关键字参数
def f(id,name,age):
    print(id...]]></description><category></category></item><item><title><![CDATA[Xpath解析]]></title><link>https://blog.youkuaiyun.com/baiwei9609/article/details/101654019</link><guid>https://blog.youkuaiyun.com/baiwei9609/article/details/101654019</guid><author>baiwei9609</author><pubDate>Fri, 06 Sep 2019 07:45:00 +0800</pubDate><description><![CDATA[import requests 
from lxml import etree
url = 'https://www.huawei.com/cn/?ic_medium=direct&amp;ic_source=surlent'
response = requests.get(url = url)
ht = response.text
tree = etree.HTML(ht)
#也可以解...]]></description><category></category></item><item><title><![CDATA[bs4解析]]></title><link>https://blog.youkuaiyun.com/baiwei9609/article/details/101654020</link><guid>https://blog.youkuaiyun.com/baiwei9609/article/details/101654020</guid><author>baiwei9609</author><pubDate>Thu, 05 Sep 2019 12:40:00 +0800</pubDate><description><![CDATA[介绍：将一个html文档转换成BeautifulSoup对象，然后通过对象的方法或属性查找指定的节点内容

转换本地文件：

​ soup = BeautifulSoup(fp,'lxml') fp为文档对象

转换网络文件：
soup = BeautifulSoup('str/bytes','lxml') 'str/bytes'通常为requests请求方法实例化对象的text或con...]]></description><category></category></item><item><title><![CDATA[函数1——作用域相关]]></title><link>https://blog.youkuaiyun.com/baiwei9609/article/details/101654007</link><guid>https://blog.youkuaiyun.com/baiwei9609/article/details/101654007</guid><author>baiwei9609</author><pubDate>Wed, 04 Sep 2019 17:48:00 +0800</pubDate><description><![CDATA[函数1——作用域相关
为何使用函数？
减少代码冗余和增加代码的可读性
1.函数的一些概念

def 是可执行的代码。def是一个可执行的语句——函数并不存在，直到函数运行了def 后（函数被调用后）才存在。def语句在模块文件中编写，在模块文件第一次被导入的时候生成定义的函数。
def创建了一个对象并将其赋值给某一变量名（即函数名）。当运行到def语句时，它将会生成一个新的函数对象并将其...]]></description><category></category></item><item><title><![CDATA[正则与re模块]]></title><link>https://blog.youkuaiyun.com/baiwei9609/article/details/101654008</link><guid>https://blog.youkuaiyun.com/baiwei9609/article/details/101654008</guid><author>baiwei9609</author><pubDate>Sun, 01 Sep 2019 16:45:00 +0800</pubDate><description><![CDATA[一、正则表达式
在线测试工具 http://tool.chinaz.com/regex/
1.字符组

​ 在同一个位置可能出现的各种字符组成一个字符组，在正则表达中用[ ]表示
​ 一个正则就是一条匹配规则，可以规定一次匹配字符的长度，字符组每次匹配一个长度为1的字符，例如：待匹配字符为：2a+ 使用字符组进行匹配时就会进行三次比较




正则
待匹配字段
匹配结果
说明




[...]]></description><category></category></item><item><title><![CDATA[HTTP协议]]></title><link>https://blog.youkuaiyun.com/baiwei9609/article/details/101654006</link><guid>https://blog.youkuaiyun.com/baiwei9609/article/details/101654006</guid><author>baiwei9609</author><pubDate>Fri, 30 Aug 2019 08:09:00 +0800</pubDate><description><![CDATA[http协议规定了客户端和服务器之间的通信格式
import socket
def handle_request(client):
    request_data = client.recv(1024)
    print('request:'request_data)
    #client.send('HTTP/1.1 200 OK \r\nstatus:200\r\nConten...]]></description><category></category></item><item><title><![CDATA[Jupyter修改工作目录（Anaconda环境）]]></title><link>https://blog.youkuaiyun.com/baiwei9609/article/details/101654005</link><guid>https://blog.youkuaiyun.com/baiwei9609/article/details/101654005</guid><author>baiwei9609</author><pubDate>Wed, 28 Aug 2019 21:22:00 +0800</pubDate><description><![CDATA[Anaconda安装时未添加环境变量
1.打开Anaconda Prompt

输入jupyter notebook --generate-config
(base) C:\Users\Sroxi&gt;jupyter notebook --generate-config

Writing default config to: C:\Users\Sroxi\.jupyter\jupyte...]]></description><category></category></item><item><title><![CDATA[if语句、while和for循环]]></title><link>https://blog.youkuaiyun.com/baiwei9609/article/details/101654004</link><guid>https://blog.youkuaiyun.com/baiwei9609/article/details/101654004</guid><author>baiwei9609</author><pubDate>Wed, 28 Aug 2019 08:39:00 +0800</pubDate><description><![CDATA[一、if语句
1.多路分支
if 条件1:
    代码块1
elif 条件2:
    代码块2
else:
    代码块3
    
#python会执行第一次测试为真的语句，如果所有测试都为假，就执行else部分（本例）
2.三元表达式(短路运算)
x = y if a else z
# 只有条件a为真，才会执行x = y
#假设y是bool真值
x = (a and y) or...]]></description><category></category></item><item><title><![CDATA[pymysql模块的使用]]></title><link>https://blog.youkuaiyun.com/baiwei9609/article/details/101654003</link><guid>https://blog.youkuaiyun.com/baiwei9609/article/details/101654003</guid><author>baiwei9609</author><pubDate>Mon, 26 Aug 2019 16:13:00 +0800</pubDate><description><![CDATA[一、连接MySQL服务器
import pymysql

# 连接数据库，调用Connect函数（Connect函数会返回Connection的一个对象）
conn = pymysql.Connect(host='localhost',        #主机ip
                             port=3306,         #端口
           ...]]></description><category></category></item></channel></rss>