python 爬虫入门之正则表达式 一

 python  正则表达式知识点

正则 常用符号

. : 匹配任意字符,换行符除外

* : 匹配前一个字符 0 次或者无限次

? : 匹配前一个字符 0次或者1次

.* : 贪心算法

.*? :非贪心算法

(): 括号内的数据作为结果返回


正则常用方法:


findall: 匹配所有符合规律的内容,返回包含结果的列表

Search: 匹配并提取第一个符合规律的内容,返回一个正则表达式对象

Sub: 替换符合规律的内容,返回替换后的值



正则表达式的基本应用 ,使用正则表达式过滤一个简单的test文件

test 文件如下

<!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>

  

正则使用效果如下 

#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
相关文章
相关标签/搜索
每日一句
    每一个你不满意的现在,都有一个你没有努力的曾经。
公众号推荐
   一个健康类的公众号,欢迎关注
小青桔健康