正则表达式(续)

来源:互联网 发布:二值化算法程序 编辑:程序博客网 时间:2024/06/14 13:56

一、正则表达式的应用举例

1

#-*-coding:utf8-*-#导入re库文件import ref = open('text.txt','r')     # text.txt文件与当前.py文件在同一路径下html = f.read()f.close()#爬取网页标题# 在确定只有一个内容时,使用search方法,可提高效率title = re.search('<title>(.*?)</title>',html,re.S).group(1)print title

输出:

极客学院爬虫测试


2

#-*-coding:utf8-*-#导入re库文件import ref = open('text.txt','r')html = f.read()f.close()#爬取链接links = re.findall('href="(.*?)"',html,re.S)for each in links:    print each

输出:

http://jikexueyuan.com/welcome.html
http://jikexueyuan.com/1.html
http://jikexueyuan.com/2.html
http://jikexueyuan.com/3.html


3

#-*-coding:utf8-*-#导入re库文件import ref = open('text.txt','r')html = f.read()f.close()#抓取部分文字,先大再小技巧text_fied = re.findall('<ul>(.*?)</ul>',html,re.S)[0]the_text = re.findall('">(.*?)</a>',text_fied,re.S)for every_text in the_text:    print every_text

输出:

这是第一条
这是第二条
这是第三条


4

#-*-coding:utf8-*-#导入re库文件import reold_url = 'http://www.jikexueyuan.com/course/android/?pageNum=2'total_page = 5#sub实现翻页for i in range(2,total_page+1):   # 左闭右开    new_link = re.sub('pageNum=\d+','pageNum=%d'%i,old_url,re.S)    print new_link

输出:

http://www.jikexueyuan.com/course/android/?pageNum=2
http://www.jikexueyuan.com/course/android/?pageNum=3
http://www.jikexueyuan.com/course/android/?pageNum=4
http://www.jikexueyuan.com/course/android/?pageNum=5




二、实战——制作文本爬虫

1 目标网站:

http://blog.csdn.net/column.html


2 目标内容:

图片

3 实现原理:

3.1 保存网页源代码

目前,还没有涉及到使用Python程序获取网页源代码,但是可以手动获取,因此这种文本爬虫方式又称为半自动爬虫人肉爬虫

1' 右击网站页面,点击“查看源代码”跳出该网页源代码(view-source:http://blog.csdn.net/column.html);

2' 对于代码量大的源程序,可回到目标网站,右击页面,点击“审查元素”,再点击弹出窗口的左上角的放大镜图标,选择目标图片,则自动定位到相应代码位置;

3' 在目标图片标签内,给出了图片网址,以及class="column_logo"信息作为寻找标记;


4' 切换到源代码页面,搜索关键字class="column_logo",可查看到该网页的所有图片对应的网址及其他信息;


5' 本着先大后小的原则,不是复制全部源代码,只需复制涉及到相关信息的源代码,以文本文件格式保存在与.py文件同一路径下;


3.2 Python读文件加载源代码

3.3 正则表达式提取图片网址

3.4 下载图片

#-*-coding:utf8-*-#导入re库文件import reimport requests  # python获取网页文件的利器,这里用以保存图片f = open('text.txt','r')html = f.read()f.close()pic_url=re.findall('src="(.*?)" class="column_logo"',html,re.S)i=0for each in pic_url:    print 'now downloading:'+each    pic=requests.get(each)              # 下载图片    fp=open('pic\\'+str(i)+'.jpg','wb') # 图片保存在pic文件夹下    fp.write(pic.content)    fp.close()    i+=1












0 0
原创粉丝点击