import re
#re:用于提取字符串内容的模块
#1>创建正则对象; 2>匹配查找; 3>提取数据保存;
string =
""" <html> <div><a href='www.baidu.com'></a></div></div></div> </div><title>正则</title></div> <html><div><a href='www.baidu1.com'></a></div> </div></div></div><title>正则1</title></div> <html><div><a href='www.baidu2.com'></a> </div></div></div></div><title>正则2</title></div> <html><div><a href='www.baidu3.com'> </a></div></div></div></div><title>正则3</title></div>""" #()是提取的一组数据 re.S可以将正则的搜索域不再是一行, 而是整个HTML字符串 pattern = re.compile(r"<a href='(.*?)'>.*?<title>(.*?)</title>"),re.S #用正则匹配元素时. 注意双引号和单引号都要跟元码保持一致而且注意区分单双引号. #.*?费贪婪匹配 #.*贪婪匹配 #findall()返回是列表 res = re.findall(pattern, string) #查出匹配的 string 结果符合 pattern 条件的所有元素
print(res)#查找单个数据:search():不考虑数据的位置. match():必须保证数据在目标字符串的 !!!!起始位置!!! string = "a12345boooooobccccccb" #a.*?b a12345b #a.*b a12345boooooobccccccb #费贪婪匹配匹配到第一个符合条件的就会返回,贪婪匹配会匹配到最后一个符合条件的.拿到更多数据,我们一般用非贪婪匹配
重点,正则表达式掌握这些基本能够应付常见问题,,注意findall返回的是一个列表啊,列表支持索引能够迭代,后期会经常用于比较复杂的爬虫应用.其中的两个参数!!!牢记(要么死,要么学)