博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python爬虫--解析网页几种方法之正则表达式
阅读量:5313 次
发布时间:2019-06-14

本文共 1782 字,大约阅读时间需要 5 分钟。

1、正则表达式

正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。

re 模块使 Python 语言拥有全部的正则表达式功能。

re.match函数

re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。

import reprint(re.match('www', 'www.runoob.com').span())  # 在起始位置匹配print(re.match('com', 'www.runoob.com'))         # 不在起始位置匹配

结果:

(0, 3)None
import reline = "Cats are smarter than dogs"matchObj = re.match( r'(.*) are (.*?) .*', line)if matchObj:   print ("matchObj.group() : ", matchObj.group())   print ("matchObj.group(1) : ", matchObj.group(1))   print ("matchObj.group(2) : ", matchObj.group(2))else:   print ("No match!!")

结果:

matchObj.group() :  Cats are smarter than dogsmatchObj.group(1) :  CatsmatchObj.group(2) :  smarter
r'(.*) are (.*?) .*',r的意思为raw string,纯粹的字符串,group(0),是匹配正则表达式整体结果,group(1) 列出第一个括号匹配部分,group(2) 列出第二个括号匹配部分。

re.search方法

re.search 扫描整个字符串并返回第一个成功的匹配。

re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配。

import reline = "Cats are smarter than dogs";matchObj = re.match( r'dogs', line, re.M|re.I)if matchObj:   print ("match --> matchObj.group() : ", matchObj.group())else:   print ("No match!!")matchObj = re.search( r'dogs', line, re.M|re.I)if matchObj:   print ("search --> matchObj.group() : ", matchObj.group())else:   print ("No match!!")

结果:

No match!!search --> matchObj.group() :  dogs

 

re.findall方法

findall能够找到所匹配的结果,并且以列表的形式返回。

import requestsimport relink = "http://www.sohu.com/"headers = {
'User-Agent' : 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'}r = requests.get(link, headers= headers)html = r.texttitle_list = re.findall('href=".*?".(.*?)',html)print (title_list)
['新闻', '财经', '体育', '房产', '娱乐', '汽车', '时尚', '科技', '美食', '星座', '邮箱', '地图', '千帆', '畅游']

 

 

抓取搜狐的主标题。

 

 

转载于:https://www.cnblogs.com/leon507/p/7615431.html

你可能感兴趣的文章
【新坑】音乐生成
查看>>
构建自己的项目管理方案
查看>>
利用pca分析fmri的生理噪声
查看>>
div水平居中且垂直居中
查看>>
怎么在windows7系统我的电脑中添加快捷方式
查看>>
QT - 内存泄漏检测
查看>>
三层架构
查看>>
epoll使用具体解释(精髓)
查看>>
数据库设计笔记
查看>>
JPA进行insert操作时会首先select吗
查看>>
AndroidArchitecture
查看>>
原生JavaScript第六篇
查看>>
JS基础学习3
查看>>
Tennis Championship
查看>>
SQL
查看>>
JavaScript基础-var
查看>>
javascript 进阶篇1 正则表达式,cookie管理,userData
查看>>
安装Endnote X6,但Word插件显示的总是Endnote Web"解决办法
查看>>
python全栈 计算机硬件管理 —— 硬件
查看>>
用WebClinet实现SharePoint上文档库中文件的上传与下载
查看>>