- 完成一个爬虫的制作的基本过程
- 分析需求:就是我们需要在网页中爬取什么内容。
- 分析网站:根据需求在网站上找到相应的资源。
- 获取源码:requests包来获取,注意返回的response的各个属性的类型、编码。
- 匹配资源:用正则表达式匹配目的资源的url。
- 存储资源:将获取的资源以正确的格式存放。
2. 与爬虫有关的基础知识
- 正则表达式
- 正则表达式的基本符号
-
-
- ^ :必须以 ^ 之后的字符为开头,如 ^a 表示必须以a为开头。
- $ :必须以 $ 之前的字符为结尾,如 3$ 表示必须以数字3为结尾。
- . :代表任意字符,换行符除外,若后面加入re.S则也能代表换行符。
- * :表示 * 之前的字符可以重复任意多次。+ :表示 + 前面的字符可以重复至少一次
- + :表示 + 之前的字符可以重复至少一次。
- ? :匹配前面的字符0或1次,也表示非贪婪模式。一般跟 .*? 组合使用。
- {x} :表示限定该符号之前的字符可以重复的次数为 x 次
- {x,} :表示限定该符号之前的字符可以重复的次数大于等于x次。
- {x,y} :表示限定该符号之前的字符可以重复的次数为大于等于 x 次而小于等于 y 次。
- | :表示或,用于有多种表示方式的时候,如 a|b 表示可能出现a,b两种情况,任意一个满足即可匹配。
- [ ] :表示 [ ] 内的内容任意一个满足即可匹配。
- \ : 将普通字符转化为特殊字符或者解除特殊字符的功能。
- \s :代表空格。
- \S :代表非空格。
- \w :代表匹配任意Unicode字符。
- \W :不为 \w 即可。
- \d :代表数字
- [\u4E00-\u9FA5] :代表汉字,如果要匹配一串汉字,则中间不能有空格。
- ( ) :作为子内容提取,一般我们需要留下的内容要放到括号里,比如我们要从一串字符串中提取数字,则(\d+)
-
2.贪婪模式与非贪婪模式
- 贪婪模式:匹配尽可能多的字符,不声明的情况下默认为贪婪模式。
- 非贪婪模式:匹配尽可能少的字符。
编码格式
ASCII
计算机存放数据以及处理数据都是用的二进制0和1,所以最先出现的编码格式为ASCII码,该码只能表示128个字符
GB2312
用ASCII编码处理中文是不够的,因为中文有6000多个汉字,于是中国在ASCII编码的基础上进行了扩展制定了GB2312编码,用两个字节表示一个汉字。
GBK
是对GB2312编码的简单扩展。
GB18030
由于中国是多民族国家,许多民族有其自己的文字,所以在GB2312的基础上进行了扩展,制定了GB18030编码。
Unicode
由于世界上的每个国家都制定了自己的编码标准,所以ISO为了方便,制定了Unicode编码(字符集),将全世界上的所有符号都放了进来,Unicode为定长编码,采用的是16位比特编码。
UTF
这样有可能浪费内存资源,于是UTF编码出现了,采用每次用8位或者16位比特进行传输,分别为UTF-8和UTF-16
encode( )跟decode( )方法
这两个函数都是字符串的函数,字符串在python中是用Unicode编码的,所以在做编码转换的时候,要将Unicode作为中间编码,先将其他编码decode成Unicode编码,再将Unicode编码encode成目标编码decode( ) : 将其他类型的编码转换成Unicode编码。如str1.decode('gb2312') 表示将gb2312类型编码的字符串解码为Unicode类型。
encode( ) : 将Unicode类型的编码编码成其他类型的编码。入str1.encode('gb2312') 表示将Unicode类型的字符串str1编码为gb2312
- requests包
- requests.get(url,params) :最常用的一个方法,获取网页源代码,返回一个response对象,该对象里面有多种属性,state_code,url,content,headers等等,可以调用显示。
暂且整理这部分基础知识。