python 正则表达式知识点
正则 常用符号
. : 匹配任意字符,换行符除外
* : 匹配前一个字符 0 次或者无限次
? : 匹配前一个字符 0次或者1次
.* : 贪心算法
.*? :非贪心算法
(): 括号内的数据作为结果返回
正则常用方法:
findall: 匹配所有符合规律的内容,返回包含结果的列表
Search: 匹配并提取第一个符合规律的内容,返回一个正则表达式对象
Sub: 替换符合规律的内容,返回替换后的值
正则表达式的基本应用 ,使用正则表达式过滤一个简单的test文件
test 文件如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <!DOCTYPE html> < html > < head > < meta charset = "UTF-8" > < title >极客学院爬虫测试</ title > </ head > < body > < div > < a href = "http://www.jikexueyuan.com/welcome.html" ></ a >《python定向爬虫入门》 < div > < ul > < li >< a href = "http://www.jikexueyuan.com/1.html" >这是第一条</ a ></ li > < li >< a href = "http://www.jikexueyuan.com/2.html" >这是第二条</ a ></ li > < li >< a href = "http://www.jikexueyuan.com/3.html" >这是第三条</ a ></ li > < li >< a href = "http://www.jikexueyuan.com/4.html" >这是第四条</ a ></ li > </ ul > </ div > </ div > </ body > </ html > |
正则使用效果如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | #coding:utf-8 import re old_url = 'http://www.jikexueyuan.com/course/web/?pageNum=2' total_page = 13 f = open ( 't1.txt' , 'r' ,encoding = "utf-8" ) html = f.read() f.close() #爬取标题 title = re.search( '<title>(.*?)</title>' ,html,re.S).group( 1 ) #使用search 找到所需要的内容,就返回 print (title) 执行代码,显示如下 极客学院爬虫测试 #爬取链接 links = re.findall( 'href="(.*?)"' ,html,re.S) print (links) 执行代码,显示如下 [ 'http://www.jikexueyuan.com/welcome.html' , 'http://www.jikexueyuan.com/1.html' , 'http://www.jikexueyuan.com/2.html' , 'http://www.jikexueyuan.com/3.html' , 'http://www.jikexueyuan.com/4.html' ] #提取文字 text_filed = re.findall( '<ul>(.*?)</ul>' ,html,re.S)[ 0 ] print (text_filed) print ( "===============================" ) the_text = re.findall( '">(.*?)</a>' ,text_filed,re.S) for every_text in the_text: print (every_text) 执行代码,显示如下 这是第一条 这是第二条 这是第三条 这是第四条 #sub 实现翻页功能 for i in range ( 7 ,total_page + 1 ): new_link = re.sub( 'pageNum=\d+' , 'pageNum=%d' % i,old_url,re.S) print (new_link) 执行代码,显示如下 http: / / www.jikexueyuan.com / course / web / ?pageNum = 7 http: / / www.jikexueyuan.com / course / web / ?pageNum = 8 http: / / www.jikexueyuan.com / course / web / ?pageNum = 9 http: / / www.jikexueyuan.com / course / web / ?pageNum = 10 http: / / www.jikexueyuan.com / course / web / ?pageNum = 11 http: / / www.jikexueyuan.com / course / web / ?pageNum = 12 http: / / www.jikexueyuan.com / course / web / ?pageNum = 13 |