正则表达式(续)
来源:互联网 发布:二值化算法程序 编辑:程序博客网 时间: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
- 正则表达式(续)
- js 正则表达式(续)
- 【正则表达式】(三)、生成正则表达式
- 正则表达式(一)认识正则表达式
- 正则表达式(二)--常用正则表达式
- ios的正则表达式(续)
- 一些常见正则表达式(续)
- 正则表达式续
- 正则表达式(一)
- 正则表达式(一)
- 正则表达式(1)
- (转)正则表达式
- 正则表达式(1)
- 正则表达式(摘录)
- 正则表达式(1)
- 正则表达式(2)
- 正则表达式(3)
- 正则表达式(一)
- 网络信息检索效果评价指标体系设计探讨综述
- C++作业6
- 关于今天的电面QUQ
- 《Spring学习笔记》:Spring、Hibernate、struts2的整合前奏
- linux 下面安装oracle
- 正则表达式(续)
- Linuxc编程的常用关键字 register ,static ,extern ,const ,typedef
- 事务四大特征:原子性,一致性,隔离性和持久性(ACID)
- 父子控制器
- putty 使用之psftp.exe,远程服务器和本机之间上传下载。
- Windows下的包管理器Chocolatey
- windows中遍历指定文件夹下的所有子文件夹
- 二叉排序数的基本操作(构造、插入、删除)
- PHP代码调试