php正则函数抓取网页连接(python·简介以及相关的经验技巧,文章约6916字,浏览量3464 )
优采云 发布时间: 2021-11-03 07:22php正则函数抓取网页连接(python·简介以及相关的经验技巧,文章约6916字,浏览量3464
)
栏目:python·
Introduction 本文文章主要介绍几种网页解析方法的正则表达式(示例代码)及相关经验技巧。 文章约6916字,346页浏览量,点赞数4,值得参考!
1、正则表达式
正则表达式是一种特殊的字符序列,它可以帮助您轻松检查字符串是否与某个模式匹配。
re 模块使 Python 语言拥有所有的正则表达式功能。
重新匹配功能
re.match 尝试从字符串的开头匹配模式。如果一开始匹配不成功,match() 返回 none。
import re
print(re.match(‘www‘, ‘www.runoob.com‘).span()) # 在起始位置匹配
print(re.match(‘com‘, ‘www.runoob.com‘)) # 不在起始位置匹配
结果:
(0, 3)
None
import re
line = "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 dogs
matchObj.group(1) : Cats
matchObj.group(2) : smarter
r‘(.*) are (.*?) .*‘,r的意思为raw string,纯粹的字符串,group(0),是匹配正则表达式整体结果,group(1) 列出第一个括号匹配部分,group(2) 列出第二个括号匹配部分。
研究方法
re.search 扫描整个字符串并返回第一个成功匹配。
re.match 只匹配字符串的开头。如果字符串与开头的正则表达式不匹配,则匹配失败,函数返回None;而 re.search 匹配整个字符串,直到找到匹配项。
import re
line = "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 requests
import re
link = "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.text
title_list = re.findall(‘href=".*?".(.*?)‘,html)
print (title_list)
[‘新闻‘, ‘财经‘, ‘体育‘, ‘房产‘, ‘娱乐‘, ‘汽车‘, ‘时尚‘, ‘科技‘, ‘美食‘, ‘星座‘, ‘邮箱‘, ‘地图‘, ‘千帆‘, ‘畅游‘]
获取搜狐的主要标题。