import re
ss ='I love you, do you?'
res = re.match(r'((\w)+(\W))+ ',ss)
print(res.group())
ping_as = 'Reply from 220.181.57.216: bytes = 32 time = 3ms TTL = 47'
res = re.search(r'(time = )(\d+\w+)+(.)+TTL', ping_as)
print(res.group(2))
值得注意的是,正则表达式中任意地方的空格都需要格外谨慎对待! 例如:上面代码中(\d+\w+),第二个‘+’后不能加空格,否则就会报错。
通过正则表达式解析出html中的信息,以下代码提取出百度首页的标题句
import re,requests
r = requests.get('https://www.baidu.com').content.decode('utf-8')
print(r)
pt = re.compile('(\<title\>)([\S\s]+)(\<\/title\>)') #编译正则表达式
print(pt.search(r).group(2))
使用‘r’简化正则表达式中的转义字符‘\’
pt = re.compile(r'(<title>)([\S\s]+)(</title>)') #编译正则表达式
print(pt.search(r).group(2))
下面这个网址中详细介绍了BeautifulSoup的使用方法 https://cuiqingcai.com/1319.html
以下是一些BeautifulSoup的实例
import re,requests
from bs4 import BeautifulSoup
r = requests.get('https://baike.baidu.com/item/%E7%BA%BD%E7%BA%A6/6230?fromtitle=%E7%BA%BD%E7%BA%A6%E5%B8%82&fromid=20261076&fr=aladdin')
# print(r)
bs = BeautifulSoup(r.content,"html.parser")
# print(bs)
print(bs.title)
print(bs.a.name)
#获取a标签的href属性值
print(bs.a.attrs.get('href'))
#更改a标签的href属性值
bs.a['href'] = "sss"
print(bs.a)
#删除a标签的某个属性
del bs.a['href']
print(bs.a)
#获取标签内部的文字
print(bs.a.string)
print(type(bs.a.string))
#查找所有的a标签
ass = bs.findAll('a')
print(ass)
#查找所有以a开头的标签
for tag in bs.findAll(re.compile("^h")):
print(tag.name)
#查找多个标签 用中括号[]包含两个标签类型
print(bs.findAll(['p','a']))
#找到所有标签
for tag in bs.find_all(True):
print("find_all(True) "+tag.name)
#查找href属性包含 "feedback" 字符的标签
ffe = bs.findAll(href=re.compile("feedback"))
print(ffe)
#过滤多个属性
sddf = bs.findAll(href=re.compile("feedback"), target='_blank')
print(sddf)
2.2节知识点结束。