学习内容:
1.爬虫基本原理
2.urllib库基本使用
3.正则表达式基础
1.response响应状态
200代表成功,301跳转,404找不到页面,502服务器错误
2.解析方式:直接处理,Json解析,正则表达式,BeautifulSoup,PyQuery,XPath
3.保存数据:纯文本,关系型数据库,非关系型数据库,二进制文件
4.urllib库:python内置的HTTP库
urllib.request 请求模块 urllib.error 异常处理模块
urllib.parse url解析模块
5.响应方式:response.read().decode('utf-8')
6.请求方式:
from urllib import request,parse url='http://httpbin.org/post' headers={ } dict={ 'name':'Germey' } data = bytes(parse.urlencode(dict),encoding='utf8') req=request.Request(url=url,data=data,headers=headers,method='post') reponse=request.urlopen(req) print(response.read().decode('utf-8'))
7.正则表达式
常见匹配模式
w 匹配字母数字及下划线
W 匹配非字母数字下划线
s 匹配任意空白字符
S 匹配任意非空字符
d 匹配任意数字
D 匹配任意非数字
A 匹配字符串开始
匹配字符串结束,如果存在换行,只匹配到换行前的结束字符串
z 匹配字符串结束
最常规的匹配
import re content = 'Hello 123 4567 World_This is a Regex Demo' print(len(content)) result = re.match('^Hellosdddsd(4)sw{10}.*Demo$',content) print(result) print(result.group()) print(result.span())
运行结果:
泛匹配
import re content = 'Hello 123 4567 World_This is a Regex Demo' result = re.match('^Hello.*Demo$',content) print(result)
匹配目标
import re content = 'Hello 123 4567 World_This is a Regex Demo' result = re.match('^Hellos(d+)sWorld.*Demo$',content) print(result) print(result.group(1)) print(result.span())
re.search扫描整个字符串并返回第一个成功的匹配
总结:为匹配方便,能用search就不要match
re.findall 搜索字符串,以列表形式返回全部能匹配的子串
re.sub 替换字符串中每一个匹配的子串后返回替换后的字符串
import re content = 'Hello 123 4567 World_This is a Regex Demo' re.sub('d+','',content)
re.compile 将正则字符串编译成正则表达式对象,将一个正则表达式编译成正则对象,以便于复用该匹配模式