导航菜单
首页 >  pythonHTML真题  > Python爬虫

Python爬虫

 

正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符")。

正则表达式通常被用来匹配、检索、替换和分割那些符合某个模式(规则)的文本。

 

一、常用正则表达式回顾单字符:. : 除换行以外所有字符[] :[aoe] [a-w] 匹配集合中任意一个字符\d :数字 [0-9]\D : 非数字\w :数字、字母、下划线、中文\W : 非\w\s :所有的空白字符包,括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。\S : 非空白数量修饰:* : 任意多次 >=0+ : 至少1次>=1? : 可有可无 0次或者1次{m} :固定m次 hello{3,}{m,} :至少m次{m,n} :m-n次边界:$ : 以某某结尾 ^ : 以某某开头分组:(ab) 贪婪模式: .*非贪婪(惰性)模式: .*?re.I : 忽略大小写re.M :多行匹配re.S :单行匹配re.sub(正则表达式, 替换内容, 字符串)

 

回顾练习:

import re#提取出pythonkey="javapythonc++php"re.findall('python',key)[0]# 都有引号#提取出hello worldkey="hello world"re.findall('(.*)',key)[0]#提取170string = '我喜欢身高为170的女孩're.findall('\d+',string)#提取出http://和https://key='http://www.baidu.com and https://boob.com're.findall('https?://',key)#提取出hellokey='lalalahellohahah' #输出hellore.findall('(.*)',key)#提取出hit. key='bobo@hit.edu.com'#想要匹配到hit.re.findall('h.*?\.',key)#匹配sas和saaskey='saas and sas and saaas're.findall('sa{1,2}s',key)#匹配出i开头的行string = '''fall in love with youi love you very muchi love shei love her'''re.findall('^i.*',string,re.M)#匹配全部行string1 = """静夜思窗前明月光疑是地上霜举头望明月低头思故乡"""re.findall('.*',string1,re.S)

注意:re.findall()通常匹配出来的是列表,所以要通过索引的方式将内容提取出来。

 

二、数据解析-正则表达式

1. 需求:爬取糗事百科中所有糗图照片

import requestsimport reimport os#创建一个文件夹if not os.path.exists('./qiutuLibs'):# 注意里面要有引号os.mkdir('./qiutuLibs')headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36'}url = 'https://www.qiushibaike.com/pic/'page_text = requests.get(url=url,headers=headers).text#进行数据解析(图片的地址)ex = '.*?

相关推荐: