微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

正则表达式续

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

1

#-*-coding:utf8-*-

#导入re库文件
import re

f = 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 re

f = open('text.txt','r')
html = f.read()
f.close()

#爬取链接
links = re.findall('href="(.*?)"',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 re

f = open('text.txt','r')
html = f.read()
f.close()

#抓取部分文字,先大再小技巧
text_fied = re.findall('<ul>(.*?)</ul>',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 re

old_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 re
import requests  # python获取网页文件的利器,这里用以保存图片

f = open('text.txt','r')
html = f.read()
f.close()

pic_url=re.findall('src="(.*?)" class="column_logo"',re.S)
i=0
for 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

原文地址:https://www.jb51.cc/regex/359229.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐