urllib发起请求接收响应
GET请求
#爬取网站的url
url = 'http://www.baidu.com'
#设置请求头
headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3724.8 Safari/537.36"}
#发起请求接收响应
req = request.Request(url=url,headers=headers)
response = request.urlopen(req,timeout=10)
POST请求
#爬取网站的url
url = 'http://127.0.0.1:8000/api/login/'
#需要的参数
data = {
'username':'pch',
'password':'hang1228'
}
进行编码
data = parse.urlencode(data).encode('utf-8')
headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3724.8 Safari/537.36"}
#发起请求接收响应
req = request.Request(url=url,headers=headers,data=data)
response = request.urlopen(req,timeout=10)
parse
# parse.urlencode():将字典类型的参数转为url编码格式
data = {
'username':'xxxxxxxxx',
'password':'abc123456'
}
data = parse.urlencode(data)
print(data)
# parse.parse_qs():将url编码格式的字符串转化为字典类型
data = parse.parse_qs(data)
print(data)
# parse.quote()将中文字符转为url编码的字符
wd = '美女'
wd = parse.quote(wd)
print(wd)
# wd=%E7%BE%8E%E5%A5%B3
# parse.unquote()将url编码的字符转换为中文字符
wd = parse.unquote(wd)
print(wd)
# wd =美女
正则
-
. 匹配除了换行符之外的任意字符
\d 匹配数字0-9 =>[0-9] => ^\D
\D 匹配非数字
\s 匹配空白字符(空格 \n \r \t)
\S 匹配非空白字符
\w 匹配单词字符[a-zA-Z0-9_]
\W 匹配非单词字符
^ 以…开头
$ 以…结尾
[0-9a-z] :表示匹配数字0~9,字母a~z
[^a-z] : 不匹配a-z之间的字符 -
多字符匹配,贪婪模式
- 匹配*号前的字符任意次数
- +匹配+号前的字符至少一次
?匹配?号前的字符0~1次
#多字符匹配,非贪婪模式 (abcdeabcde) e
*?
+?
??
| 或
() 分组
re模块的一些方法
re.match():匹配字符串的开头,有符合正则规则则子串,返回结果match对象,
没有匹配到结果,返回None,单次匹配
re.search():从字符串开头,在整个字符串中进行匹配,有符合正则规则则子串
,返回结果match对象,没有匹配到结果,返回None,单次匹配
re.findall():在整个字符串中匹配所有符合正则规则的结果,返回一个list
re.finditer():在整个字符串中匹配所有符合正则规则的结果,返回一个可叠代对象
re.sub():在整个字符串中,替换所有符合正则表达式的子串
re.split() :根据正则表达式,分割字符串,返回一个list