正则表达式regex学习笔记
来源:互联网 发布:堆和栈的区别java 编辑:程序博客网 时间:2024/05/20 19:15
- 正则表达式:
- .*? 可以代表一切字符(除换行,可用re.S参数变成所有字符)
- \d 为数字 \s 为空格 例子:(\d+)为小组或目标是多个数字
- .* 和 .*? 前者为贪婪模式,后者非贪婪
- ^为开头 $为结尾
- (.*?)?表示这个目标可能出现,可能不出现
- .strip()为字符串的函数,可以删除\n这些换行符
- re.match从第一个字符开始匹配
- re.search扫描整个字符串
- re.findall找出全部
- re.sub替换 例子re.sub(‘\s’,’ ’,content)用空格替换content中的换行符、空白、
- pattern=re.compile()用于制作pattern,匹配模式
- 一般用作 re.findall(pattern,content)
- 匹配出来的结果.group(1)表示你第一个目标(.*?)
- 利用正则来获取猫眼电影top100
- 首先get()获取网页源代码
- 利用re解析代码,获取你想要的信息
- 分析网址结构,构造网址的函数
- 储存为字典、或存入数据库
代码如下:
import jsonimport reimport requestsfrom requests.exceptions import RequestExceptionfrom multiprocessing import Pooldef get_html(url): headers = { 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_2) ' 'AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36' } try: html = requests.get(url,headers=headers) if html.status_code == 200: # 返回200 表示正常运行 return(html.text) return None except RequestException: # 捕获RequestException return Nonedef parse_url(content): pattern = re.compile('<dd>.*?<i\sclass="board-index\sboard-index.*?>(\d+)</i>' +'.*?data-src="(.*?)".*?</a>.*?name.*?title="(.*?)".*?star">(.*?)</p>.*?releasetime">' +'(.*?)</p>',re.S) # 制作正则pattern \s空格,.*?所有字符, (.*?)目标, pattern换行' '+' ' items = re.findall(pattern,content) print(items) for item in items: yield{ # 安排获取的目标的顺序,删除目标的多余换行符,将目标构造成字典 'title': item[2], 'rank': item[0], 'image': item[1], 'class': item[3].strip(), 'year': item[4] } #print(type(item)) {}为字典dict,()为元组tuple, []为列表listdef write_to_file(content): with open('result.txt', 'a') as f: f.write(json.dumps(content,ensure_ascii=False) + '\n') f.close()def main(offset): url = "http://maoyan.com/board/4?offset=" +str(offset) html = get_html(url) #print(html) #parse_url(html) for item in parse_url(html): print(item) write_to_file(item)if __name__ == "__main__": pool = Pool() # multiprocessing.Pool进程池,pool,map(方法,参数列表) pool.map(main, [i*10 for i in range(10)])
阅读全文
0 0
- 正则表达式regex学习笔记
- C#Regex正则表达式学习笔记
- Java学习笔记-字符串、正则表达式(String,regex)
- 【05】 Boost库学习笔记之正则表达式(regex)
- 正则表达式学习(入门) Regex Tutorial
- Boost学习之正则表达式--regex
- Boost学习之正则表达式--regex
- !!! boost学习之正则表达式--regex
- Boost学习之正则表达式--regex
- (搬运工)Boost学习之正则表达式--regex
- Boost学习之正则表达式--regex
- Boost学习之正则表达式--regex
- Boost学习之正则表达式--regex
- Boost学习之正则表达式--regex
- Boost学习之正则表达式--regex
- Boost学习之正则表达式--regex
- Boost学习之正则表达式--regex
- Boost学习之正则表达式--regex
- MongoDb主从配置
- 面试干货:Java核心技术问题整理
- Edraw Max(亿图图示)教程:如何自定义组织结构图展示的信息
- 虚函数、虚指针和虚表
- 命令代换
- 正则表达式regex学习笔记
- webService的简单
- 雪碧图的使用
- 自己做的简单选项卡
- 浅谈web应用的负载均衡、集群、高可用(HA)解决方案
- Android机制之Handler解析
- Android一键加QQ群
- fgm实例练习笔记-3.6判断数字是否为两位数
- YOLO安装与配置