0

我想知道如何仅从 html 内容中提取内容hrefsrc我尝试了正则表达式,但失败了。

这是我想要获取的文本hrefsrc内容:

<a href="http://rdmobile.fr/blog/mobile-la-pub-consomme-plus-que-les-applications-elles-memes/"><img align="left" hspace="5" width="150" height="150" src="http://rdmobile.fr/blog/wp-content/uploads/2012/03/angry-birds-150x150.jpg" class="alignleft tfe wp-post-image" alt="angry-birds" title="angry-birds" /></a>Si vous aussi vous vous étonnez de voir votre batterie fondre comme neige au soleil dès lors que jouez à Angry Birds, rassurez-vous, c’est normal. Des chercheurs de l&#8217;université de Purdue se sont intéressés aux publicités destinées majoritairement aux applications gratuites, et oui, comment les développeurs mangent-ils autrement ? Plus sérieusement, cette étude, publiée sur le [...]

我想提取这样的数据。

href 内容:http ://rdmobile.fr/blog/mobile-la-pub-consomme-plus-que-les-applications-elles-memes/ src 内容:http ://rdmobile.fr/blog/wp-content/上传/2012/03/angry-birds-150x150.jpg

任何人都可以帮助我,我也喜欢学习基本的正则表达式。

谢谢,伊苏鲁

4

4 回答 4

2

JSoup这样的 DOM 解析器非常适合这类问题,并且允许直接与文档交互并使用 CSS 样式选择器:

Document document = Jsoup.connect(url).get();
Elements elementsWithSrcAttributes = document.select("[src]");
Elements elementsWithHrefAttributes = document.select("[href]");

for (Element element: elementsWithSrcAttributes) {
    System.out.println("src content: " + element.attr("src"));
}

for (Element element: elementsWithHrefAttributes) {
    System.out.println("href content: " + element.attr("href"));
}
于 2013-04-11T12:45:52.737 回答
0

您可以使用 XML 解析器解析内容。

查看解析 XML 数据

于 2013-04-11T12:32:53.530 回答
0

您不想为此使用正则表达式。只是……不要。坏事发生

您要使用的是XPath。对于给定的 HTML 文档,/a/@hrefXPath 表达式将返回节点的所有href属性。a将其视为 XML 的正则表达式。

困难的部分不是 XPath,它相对简单,而是从 HTML 文件中获取有效的 DOM。我推荐Cyber​​neko,但不知道这是否符合您的 Android 要求。

于 2013-04-11T12:55:02.827 回答
-1

一般不建议使用正则表达式从 html 中提取数据,但以下是一种基本方法的示例

String str = "<a href=\"http://rdmobile.fr/blog/mobile-la-pub-consomme-plus-que-les-applications-elles-memes/\"><img align=\"left\" hspace=\"5\" width=\"150\" height=\"150\" src=\"http://rdmobile.fr/blog/wp-content/uploads/2012/03/angry-birds-150x150.jpg\" class=\"alignleft tfe wp-post-image\" alt=\"angry-birds\" title=\"angry-birds\" /></a>Si vous aussi vous vous étonnez de voir votre batterie fondre comme neige au soleil dès lors que jouez à Angry Birds, rassurez-vous, c’est normal. Des chercheurs de l&#8217;université de Purdue se sont intéressés aux publicités destinées majoritairement aux applications gratuites, et oui, comment les développeurs mangent-ils autrement ? Plus sérieusement, cette étude, publiée sur le [...]";        
Matcher m = Pattern.compile(" (?:href|src)=\"([^\"]+)").matcher(str);

while (m.find()) {
    System.out.println(m.group(1));
}

上面将只匹配任何一个或多个不是的字符序列",当它前面有一个' href="'或时' src="'

因此,如果属性值周围有单引号或没有引号,或者=.

应要求提供进一步解释,或参见例如Regular-Expressions.info

于 2013-04-11T15:24:49.513 回答