前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python爬虫(二)数据解析,re正则表达式解析

python爬虫(二)数据解析,re正则表达式解析

作者头像
一写代码就开心
发布2022-06-06 08:05:29
6840
发布2022-06-06 08:05:29
举报
文章被收录于专栏:java和python

目录

在这里插入图片描述
在这里插入图片描述

1 正则表达式学习的网站

在开源中国网站里面,就有这个正则表达式的工具

代码语言:javascript
复制
https://www.oschina.net/
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2 re 模块

  • findall() 找出所有满足条件的,返回的是一个列表。
代码语言:javascript
复制
import re

list4 = re.findall(r"\d+", "10111,ddd8888")
print(list4)
在这里插入图片描述
在这里插入图片描述
  • finditer() 迭代器的方式匹配
代码语言:javascript
复制
list3 = re.finditer(r"\d+", "10111,ddd8888")
for i in list3:
    print(i.group())
在这里插入图片描述
在这里插入图片描述
  • search:

在字符串中找满足条件的字符。如果找到,就返回。说白了,就是只会找到第一个满足条件的。

代码语言:javascript
复制
text = 'apple price $99 orange price $88'
ret = re.search('\d+',text)
print(ret.group())
在这里插入图片描述
在这里插入图片描述
  • match() 从开始的位置进行匹配。如果开始的位置没有匹配到。就直接失败了。示例代码如下:
代码语言:javascript
复制
text = 'hello'
ret = re.match('h',text)
print(ret.group())
在这里插入图片描述
在这里插入图片描述

如果第一个字母不是h,那么就会失败。示例代码如下:

代码语言:javascript
复制
text = 'ahello'
ret = re.match('h',text)
print(ret.group())
在这里插入图片描述
在这里插入图片描述

如果想要匹配换行的数据,那么就要传入一个flag=re.DOTALL,就可以匹配换行符了。示例代码如下:

代码语言:javascript
复制
text = "abc\nabc"
ret = re.match('abc.*abc',text,re.DOTALL)
print(ret.group())
在这里插入图片描述
在这里插入图片描述
  • compile() 对于一些经常要用到的正则表达式,可以使用compile进行编译,后期再使用的时候可以直接拿过来用,执行效率会更快。而且compile还可以指定flag=re.VERBOSE,在写正则表达式的时候可以做好注释。示例代码如下:
代码语言:javascript
复制
text = "the number is 20.50"
r = re.compile(r"""
                \d+ # 小数点前面的数字
                \.? # 小数点
                \d* # 小数点后面的数字
                """,re.VERBOSE)
ret = re.search(r,text)
print(ret.group())
  • sub: 用来替换字符串。将匹配到的字符串替换为其他字符串。
代码语言:javascript
复制
html = """
<div>
<p>基本要求:</p>
<p>1、精通HTML5、CSS3、 JavaScript等Web前端开发技术,对html5页面适配充分了解,熟悉不同浏览器间的差异,熟练写出兼容各种浏览器的代码;</p>
<p>2、熟悉运用常见JS开发框架,如JQuery、vue、angular,能快速高效实现各种交互效果;</p>
<p>3、熟悉编写能够自动适应HTML5界面,能让网页格式自动适应各款各大小的手机;</p>
<p>4、利用HTML5相关技术开发移动平台、PC终端的前端页面,实现HTML5模板化;</p>
<p>5、熟悉手机端和PC端web实现的差异,有移动平台web前端开发经验,了解移动互联网产品和行业,有在Android,iOS等平台下HTML5+CSS+JavaScript(或移动JS框架)开发经验者优先考虑;6、良好的沟通能力和团队协作精神,对移动互联网行业有浓厚兴趣,有较强的研究能力和学习能力;</p>
<p>7、能够承担公司前端培训工作,对公司各业务线的前端(HTML5\CSS3)工作进行支撑和指导。</p>
<p><br></p>
<p>岗位职责:</p>
<p>1、利用html5及相关技术开发移动平台、微信、APP等前端页面,各类交互的实现;</p>
<p>2、持续的优化前端体验和页面响应速度,并保证兼容性和执行效率;</p>
<p>3、根据产品需求,分析并给出最优的页面前端结构解决方案;</p>
<p>4、协助后台及客户端开发人员完成功能开发和调试;</p>
<p>5、移动端主流浏览器的适配、移动端界面自适应研发。</p>
</div>
"""

ret = re.sub('</?[a-zA-Z0-9]+>',"",html)
print(ret)
在这里插入图片描述
在这里插入图片描述

3 爬取

代码语言:javascript
复制
import csv
import re

import requests

# 请求的网站
url = "https://movie.douban.com/top250"
# 重新封装参数
param ={

}
# 设置header
headers={
    # 从浏览器获取
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'
}

# 发送请求
resp = requests.get(url=url,params=param,headers=headers)

page_content = resp.text
# print(page_content)
# 定义解析数据的正则表达式
obj = re.compile(r'<li>.*?<div class="item">.*?<span class="title">(?P<name>.*?)'
                 r'</span>.*?<p class="">.*?<br>(?P<year>.*?)&nbsp.*?<span '
                 r'class="rating_num" property="v:average">(?P<score>.*?)</span>.*?'
                 r'<span>(?P<num>.*?)人评价</span>',re.S
                 )

# 开始匹配
result = obj.finditer(page_content)

f = open("data.csv",mode="w")
csvwriter = csv.writer(f)
for i in result:
    # print(i.group("name") )
    # print(i.group("name") +"---"+i.group("year").strip()+"---"+i.group("score")+"---"+i.group("num"))
    dic = i.groupdict()
    dic['year'] = dic['year'].strip()
    csvwriter.writerow(dic.values())
print("over")
# 关闭请求
f.close()
resp.close()
在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-06-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目录
  • 1 正则表达式学习的网站
  • 2 re 模块
  • 3 爬取
相关产品与服务
Prowork 团队协同
ProWork 团队协同(以下简称 ProWork )是便捷高效的协同平台,为团队中的不同角色提供支持。团队成员可以通过日历、清单来规划每⽇的工作,同时管理者也可以通过统计报表随时掌握团队状况。ProWork 摒弃了僵化的流程,通过灵活轻量的任务管理体系,满足不同团队的实际情况,目前 ProWork 所有功能均可免费使用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档