Python爬虫备忘录

Response对象的属性

属性 说明
r.status_code HTTP 请求状态,200表示链接成功
r.text HTTP 响应内容的字符串形式,即,URL对应的页面内容
r.encoding 从HTTP header中猜测响应内容的编码方式
r.apparent_encoding 从内容中分析出的响应内容编码方式(备选编码方式)
r.content HTTP响应内容的二进制形式

r.encoding是从响应头中获取编码形式如果没有则默认为ISO-8859-1
r.apparent_encoding是从内容中分析得出可能的编码形式,相对而言准确的会高于前者

request库的7个主要方法

方法 说明
requests.request() 构造一个请求,支撑以下各方法的基础方法
requests.get() 获取HTML网页的主要方法,对应于HTTP的GET
requests.post() 向HTML网页提交POST请求的方法,对应于HTTP的POST
requests.head() 获取HTML网页头信息的方法,对应于HTTP的HEAD
requests.put() 向HTML网页提交PUT请求的方法,对应于HTTP的PUT
requests.patch() 向HTML网页提交局部修改请求,对应于HTTP的PATCH
requests.delete() 向HTML页面提交删除请求,对应于HTTP的DELETE

r = requests.get(url,params=None,kwargs)
~url :模拟获取页面的url连接
~params :url中的额外参数,字典或字节流格式
~
kwargs :12个控制访问的参数

Request库的异常

异常 说明
request.ConnectionError 网络连接错误异常,如DNS查询失败、拒绝连接等
request.HTTPError HTTP错误异常
request.URLRequired URL缺失异常
request.TooManyRedirects 超过最大重定向次数,产生重定向异常
request.ConnectTimeout 连接远程服务器超时异常
request.Timeout 请求URL超时,产生超时异常

Robots协议

# 注释, *代表所有,/代表根目录
User-agent: *
Disallow

  • 网络爬虫:自动或人工识别robots.txt,再进行内容爬取。
  • Robots协议是建议但非约束性,网络爬虫可以不遵守,但存在法律风险

BeautifulSoup

基本元素 说明
Tag 标签,最基本的信息组织单元,分别用<>和标明开头和结尾
Name 标签的名字,

...

的名字是'p',格式.name
Attributes 标签的属性,字典形式组织,格式:.attrs
NavigableString 标签内非属性字符串,<>...中字符串,格式:.string
Comment 标签内字符串的注释部分,一种特殊的Comment类型

未完待续线


正则表达式的常用操作符

操作符 说明
^ 匹配字符串开头 ^abc表示abc且在一个字符串的开头
$ 匹配字符串结尾 abc$表示abc且在一个字符串的结尾
( ) 分组标记,内部只能使用 | 操作符 (abc)表示abc,(abc|def)表示abc、def
\d 数字,等价于[0‐9]
\w 单词字符,等价于[A‐Za‐z0‐9_]正则表达式语法由字符和操作符构成
. 表示任何单个字符
[ ] 字符集,对单个字符给出取值范围 [abc]表示a、b、c,[a‐z]表示a到z单个字符
[^ ] 非字符集,对单个字符给出排除范围 [^abc]表示非a或b或c的单个字符
* 前一个字符0次或无限次扩展 abc* 表示 ab、abc、abcc、abccc等
+ 前一个字符1次或无限次扩展 abc+ 表示 abc、abcc、abccc等
? 前一个字符0次或1次扩展 abc? 表示 ab、abc
| 左右表达式任意一个 abc|def 表示 abc、def
{m} 扩展前一个字符m次 ab{2}c表示abbc
{m,n} 扩展前一个字符m至n次 ab{1,2}c表示abc、abbc

Re库常用方法

函数 说明
re.search() 在一个字符串中搜索匹配正则表达式的第一个位置,返回match对象
re.match() 在一个字符串的开始位置起匹配正则表达式,返回match对象
re.findall() 搜索字符串,以列表类型返回全部能匹配的子串
re.split() 将一个字符串按照正则表达式匹配结果进行分割,返回列表类型
re.finditer() 搜索字符串,返回一个匹配结果的迭代类型,每个迭代元素是match对象
re.sub() 在一个字符串中替换所有匹配正则表达式的子串,返回替换后的字符串

re库的函数均返回一个match对象:

match对象的属性

属性 说明
.string 匹配的文本
.re 匹配时使用的pattern对象(正则表达式)
.pos 正则表达式搜索文本的开始位置
.endpos 正则表达式搜索文本的结束位置

match常用的方法

方法 说明
.group(0) 获得匹配后的字符串
.start() 匹配字符串在原始字符串的开始位置
.end() 匹配字符串在原始字符串的结束位置
.span() 返回(.start(), .end()) (元组类型)

match的贪婪匹配与最小匹配

match = re.search(r'PY.*N', 'PYANBNCNDN')
match.group(0)

若遇到这种情况时,re库的函数会默认使用“贪婪匹配”来对字符串进行匹配,即输出匹配最长的子串。当我们想输出其中最短的字符串时,只需在"*"操作符后加一个"?"即可

match = re.search(r'PY.*?N', 'PYANBNCNDN')
match.group(0)

不止有"*"操作符能进行最小匹配,还有三种操作符均可以

操作符 说明
*? 前一个字符0次或无限次扩展,最小匹配
+? 前一个字符1次或无限次扩展,最小匹配
?? 前一个字符0次或1次扩展,最小匹配
{m, n}? 扩展前一个字符m至n次(含n),最小匹配

你可能感兴趣的:(Python爬虫备忘录)