这篇文章主要介绍了python3 re怎么用来提取大量的数据,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。
10年积累的网站设计、网站制作经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有安次免费网站建设让你可以放心的选择与我们合作。
具体代码:
re_label_script
# -*- coding:utf-8 -*-
# 自定义创建文件夹并保存图片
import re
import os
from urllib.request import urlretrieve
content = '''
'''
# 自定义函数,在创建新的文件夹
# 固定,可直接套用
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
def mkdir(path):
# 去除首位空格
path = path.strip()
# 去除尾部符号 ‘\\’
path = path.rstrip("\\")
# 判断路径是否存在
isExists = os.path.exists(path)
# 去掉目录路径,返回文件夹名
fp_new = os.path.basename(path)
if not isExists:
# 如果不存在,则创建目录 os.makedirs(path)
os.makedirs(path)
print(path + ' 新文件夹' + fp_new + '创建成功')
return True
else:
# 如果目录存在则不创建
print(path + ' 文件夹' + fp_new + '已存在')
return False
# 当前路径下创建文件夹用来保存图片
# 获取当前路径dir_path
dir_path = os.path.abspath(".")
# dir_new 绝对路径
dir_new = dir_path + '\\pic_down' # 新建文件夹的名字
# 传参并创建新文件夹在当前路径下,文件夹名称为pic_down
mkdir(dir_new)
# 固定,可直接套用
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
html_script = r''
info_script = re.findall(html_script, content, re.S|re.M)
for script in info_script:
res_original = r'"original":"(.*?)"' # 原图
pic_script = re.findall(res_original, script)
for pic in pic_script:
print(pic)
# urlretrieve()函数下载图片
filename = os.path.basename(pic) # 去掉目录路径,返回文件名
urlretrieve(pic, dir_new + '\\' +filename) #下载图片
re_label_span 过滤等标签
# -*- coding:utf-8 -*-
# 过滤等标签
import re
language = '''
'''
# 获取table中的tr值
res_tr = r"
(.*?)
"
info_tr = re.findall(res_tr, language, re.S|re.M)
for line in info_tr:
# 获取表格第一列 th 属性
res_th = r"
(.*?) | "
info_th = re.findall(res_th, line, re.S|re.M)
# print(info_th) # ['性別:']\n['異名:']\n['政黨:']\n['籍貫:']
for mm in info_th:
# 处理掉href链接
if "href" in mm: # 如果href链接存在info_th中,则处理
restr = r'
(.*?)' # 只获取a标签的内容,不获取链接 re.findall() (.*?)
h = re.findall(restr, mm, re.S|re.M)
print(h[0]) # 为什么加逗号
else:
print(mm) # 为什么加逗号
# 获取表格第二列 th 属性
res_td = r'
(.*?) | '
info_td = re.findall(res_td, line, re.S|re.M)
for nn in info_td: # 两个if判断的先后顺序
# 处理掉href链接或者rel等信息 (对于政党中既有span 又有a标签,由于内容是在a标签中,不须考虑span的影响)
if "href" in nn: # 判断内容直接所属的标签
res_value = r'
(.*?)' # 处理
等信息
td_value = re.findall(res_value, nn, re.S|re.M)
# print(td_value)
for value in td_value: # 一个td中可能会有多个href或者rel等信息
print(value)
elif "span" in nn:
res_value = r'
(.*?)' # 对于政党中,由于已经先判断了href,故不会执行到elif span中
td_value = re.findall(res_value, nn, re.S|re.M)
for value in td_value:
print(value)
else:
print(nn)
re_label_sub img_replace br (过滤掉换行符)
# -*- coding:utf-8 -*-
# 获取
中超链接及过滤
标签
import os
import re
value = '''
'''
# # 过滤HTML标签 ,<>包含的内容全部替换为空值
# value = re.sub('<[^>]+>', '', value) # 过滤HTML标签 ,<>包含的内容全部替换为空值
# print(value)
# 先过滤掉上诉替换空值后的换行符
if '' in value or '\n' in value:
value = value.replace('', '') # 替换为空值
value = value.replace('\n', ' ') # \n替换为空格
value = re.sub('<[^>]+>', '', value) # <>包含的内容全部替换为空值, 首位有空格
# 中華民國政治人士 性別: 男 政黨: 中國國民黨
value = value.strip() # 去掉value首尾的空格
# 中華民國政治人士 性別: 男 政黨: 中國國民黨
print(value)
re_label_table
# -*- coding:utf-8 -*-
import re
s = '''
序列号 | DEIN3-39CD3-2093J3 |
日期 | 2013年1月22日 |
售价 | 392.70 元 |
说明 | 仅限5用户使用 |
'''
info = re.findall(r"
(.*?) | (.*?) | ", s, re.S|re.M)
for line in info:
print(line[0],line[1]) #或者print(line) 一样的结果
# 序列号 DEIN3-39CD3-2093J3
# 日期 2013年1月22日
# 售价 392.70 元
# 说明 仅限5用户使用
# print(line[1])
# DEIN3-39CD3-2093J3
# 2013年1月22日
# 392.70 元
# 仅限5用户使用
re_label_title
# -*- coding:utf-8 -*-
import re
from urllib.request import urlopen
request = urlopen("http://www.csdn.net/";).read().decode('utf-8';)
print("方法一:") # re.search() 撇配第一个
title_pat = r"
性別: | 男 | 性別: | 女 |
'''
# 正则表达式获取
之间内容
# 核心代码:
res_tr = r'(.*?)
'
m_tr = re.findall(res_tr, language, re.S|re.M)
# /核心代码
for line in m_tr:
print(line)
# 获取表格第一列th属性
res_th = r'(.*?) | '
m_th = re.findall(res_th, line, re.S|re.M)
for mm in m_th:
print(mm)
# 获取表格第二列td属性
res_td = r'(.*?) | '
m_td = re.findall(res_td, line, re.S|re.M)
for nn in m_td:
print(nn)
# results:
# < th > 性別: < / th > < td > 男 < / td >
# 性別:
# 男
# < th > 性別: < / th > < td > 女 < / td >
# 性別:
# 女
re_label_head
作者: Klaus_Lyu
# -*- coding:utf-8 -*-
import re
content = """
豆瓣电影 Top 250
;;
"""
# 核心代码:
# regex = r''
# regex = r'(?<=)'
# regex = r'(?<=link.*?)href=".*?(?=")|(?<=link.*?)href=\'.*?(?=\')'
# 前提条件(?<=link.*?)不对,必须是确定的,不能用匹配的表达式,正确的是(?<=link )
link_href = re.findall(r'(?<=)', content,)
for line in link_metal:
print(line)
# http - equiv = "Content-Type" content = "text/html; charset=utf-8"
# http - equiv = "Expires" content = "Sun, 6 Mar 2005 01:00:00 GMT"
link_metal = re.findall(r'', content,)
for line in link_metal:
print(line)
#
#
re_label_href
# -*- coding:utf-8 -*-
import re
from urllib.request import urlopen
# !!!!!爬取豆瓣top250首页的源代码
# 自定义函数获取网页源代码,自动获取网站编码格式并按相应格式解码赋值给request
def download(html):
urlorgs = urlopen(html).read()
# 检测url的编码格式
# char_url = chardet.detect(urlorgs)
# print(char_url['encoding'])
# print(char_url) # {'encoding': 'GB2312', 'confidence': 0.99, 'language': 'Chinese'}
# url按照对应的编码格式进行解码输出, chardet.detect()内容为key-value字典
# request = urlorgs.decode(char_url['encoding'])
request = urlorgs.decode('utf-8')
return request
# 传参 html,获得正确编码后的网页源代码
request = download("https://movie.douban.com/top250";;)
# print(request)
# 爬链接要有针对性地根据目标值来观察链接的特征,依据特征进行针对性地爬取
# # 爬取a标签中所有URL链接 (目测意义不大)
urls = re.findall(r"", request, re.I|re.M)
for url in urls:
print(url)
# 爬取所有href前缀的link(目测也是意义不大)
link_list = re.findall(r"(?<=href=\").+?(?=\")|(?<=href=\').+?(?=\')", request)
for url in link_list:
print(url)感谢你能够认真阅读完这篇文章,希望小编分享python3 re怎么用来提取大量的数据内容对大家有帮助,同时也希望大家多多支持创新互联,关注创新互联行业资讯频道,遇到问题就找创新互联,详细的解决方法等着你来学习!
文章标题:python3re怎么用来提取大量的数据
转载来于:http://myzitong.com/article/gcspeh.html