我想知道如何从html内容中仅提取href
和src
内容。
我尝试了正则表达但是我失败了。
这是我想要获取href
和src
内容的文字:
<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’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/uploads/2012/03/angry-birds-150x150.jpg
任何人都可以帮助我,我也喜欢学习基本的正则表达式。
谢谢, Isuru
答案 0 :(得分: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"));
}
答案 1 :(得分:0)
您可以使用XML解析器解析内容。
答案 2 :(得分:0)
您不想为此使用正则表达式。只是......就是不要。 Bad things happen
您要使用的是XPath。对于给定的HTML文档,/a/@href
XPath表达式将返回href
个节点的所有a
属性。可以把它想象成XML的正则表达式。
困难的部分不是XPath,它相对简单,但从HTML文件中获取有效的DOM。我建议使用Cyberneko,但不知道这是否与您的Android要求兼容。
答案 3 :(得分:-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’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。