热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

多个标签的Python正则表达式-Pythonregularexpressionformultipletags

Iwouldliketoknowhowtoretrieveallresultsfromeach<p>tag.我想知道如何从每个标签中检索所有结果。impo

I would like to know how to retrieve all results from each

tag.

我想知道如何从每个

标签中检索所有结果。

import re
htmlText = '

item1

item2

item3

' print re.match(']*size="[0-9]">(.*?)

', htmlText).groups()

result:

('item1', )

what I need:

我需要的:

('item1', 'item2', 'item3')

5 个解决方案

#1


The regex answer is extremely fragile. Here's proof (and a working BeautifulSoup example).

正则表达式的答案非常脆弱。这是证明(以及一个有效的BeautifulSoup示例)。

from BeautifulSoup import BeautifulSoup

# Here's your HTML
html = '

item1

item2

item3

' # Here's some simple HTML that breaks your accepted # answer, but doesn't break BeautifulSoup. # For each example, the regex will ignore the first

tag. html2 = '

item1

item2

item3

' html3 = '

item1

item2

item3

' html4 = '

item1

item2

item3

' # This BeautifulSoup code works for all the examples. paragraphs = BeautifulSoup(html).findAll('p') items = [''.join(p.findAll(text=True)) for p in paragraphs]

Use BeautifulSoup.

#2


For this type of problem, it is recommended to use a DOM parser, not regex.

对于此类问题,建议使用DOM解析器,而不是正则表达式。

I've seen Beautiful Soup frequently recommended for Python

我见过经常推荐用于Python的Beautiful Soup

#3


Beautiful soup is definitely the way to go with a problem like this. The code is cleaner and easier to read. Once you have it installed, getting all the tags looks something like this.

美丽的汤肯定是这样的问题的方式。代码更清晰,更易于阅读。安装完成后,获取所有标签就像这样。

from BeautifulSoup import BeautifulSoup
import urllib2

def getTags(tag):
  f = urllib2.urlopen("http://cnn.com")
  soup = BeautifulSoup(f.read())
  return soup.findAll(tag)


if __name__ == '__main__':
  tags = getTags('p')
  for tag in tags: print(tag.contents)

This will print out all the values of the p tags.

这将打印出p标签的所有值。

#4


Alternatively, xml.dom.minidom will parse your HTML if,

或者,xml.dom.minidom将解析您的HTML,如果,

  • ...it is wellformed
  • ......它很好

  • ...you embed it in a single root element.
  • ...你将它嵌入一个根元素中。

E.g.,

>>> import xml.dom.minidom
>>> htmlText = '

item1

item2

item3

' >>> d = xml.dom.minidom.parseString('%s' % htmlText) >>> tuple(map(lambda e: e.firstChild.wholeText, d.firstChild.childNodes)) ('item1', 'item2', 'item3')

#5


You can use re.findall like this:

您可以像这样使用re.findall:

import re
html = '

item1

item2

item3

' print re.findall(']*size="[0-9]">(.*?)

', html) # This prints: ['item1', 'item2', 'item3']

Edit: ...but as the many commenters have pointed out, using regular expressions to parse HTML is usually a bad idea.

编辑:...但正如许多评论者指出的那样,使用正则表达式解析HTML通常是一个坏主意。


推荐阅读
  • loader资源模块加载器webpack资源模块加载webpack内部(内部loader)默认只会处理javascript文件,也就是说它会把打包过程中所有遇到的 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ... [详细]
  • 使用正则表达式爬取36Kr网站首页新闻的操作步骤和代码示例
    本文介绍了使用正则表达式来爬取36Kr网站首页所有新闻的操作步骤和代码示例。通过访问网站、查找关键词、编写代码等步骤,可以获取到网站首页的新闻数据。代码示例使用Python编写,并使用正则表达式来提取所需的数据。详细的操作步骤和代码示例可以参考本文内容。 ... [详细]
  • 本文介绍了使用cacti监控mssql 2005运行资源情况的操作步骤,包括安装必要的工具和驱动,测试mssql的连接,配置监控脚本等。通过php连接mssql来获取SQL 2005性能计算器的值,实现对mssql的监控。详细的操作步骤和代码请参考附件。 ... [详细]
  • 本文介绍了绕过WAF的XSS检测机制的方法,包括确定payload结构、测试和混淆。同时提出了一种构建XSS payload的方法,该payload与安全机制使用的正则表达式不匹配。通过清理用户输入、转义输出、使用文档对象模型(DOM)接收器和源、实施适当的跨域资源共享(CORS)策略和其他安全策略,可以有效阻止XSS漏洞。但是,WAF或自定义过滤器仍然被广泛使用来增加安全性。本文的方法可以绕过这种安全机制,构建与正则表达式不匹配的XSS payload。 ... [详细]
  • 正则表达式及其范例
    为什么80%的码农都做不了架构师?一、前言部分控制台输入的字符串,编译成java字符串之后才送进内存,比如控制台打\, ... [详细]
  • 基于php常用正则表达式的整理汇总【PHP】
    后端开发|php教程php,常用正则表达式后端开发-php教程正则表达式3m互助直销系统源码,传感器ubuntu,在家无聊如何爬虫,phpuniquid,康华seo推广lzw如下所 ... [详细]
  • javaftp上传,javaftp下载文件
    本文目录一览:1、javaftp上传5G以上大文件,怎么做 ... [详细]
  • splitjava的简单介绍
    本文目录一览:1、Javasplit方法2、 ... [详细]
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • 网络请求模块选择——axios框架的基本使用和封装
    本文介绍了选择网络请求模块axios的原因,以及axios框架的基本使用和封装方法。包括发送并发请求的演示,全局配置的设置,创建axios实例的方法,拦截器的使用,以及如何封装和请求响应劫持等内容。 ... [详细]
author-avatar
手机用户2502938867
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有