我正在尝试使用正则表达式为其标题抓取HTML页面.这是我正在尝试的:
\<title\>\A\Z\</title\>
Run Code Online (Sandbox Code Playgroud)
有什么建议?
ron*_*chn 21
<title>(.*?)</title>
Run Code Online (Sandbox Code Playgroud)
括号周围.*?允许您引用捕获组.您的正则表达式库可能有一种方法可以返回捕获组中匹配的内容.索引为0的组是整场比赛.所以你应该选择组索引1,这是它遇到的第一个起始括号(这里只有一组括号).
在某些库中,您需要:
.*?<title>(.*?)</title>.*
Run Code Online (Sandbox Code Playgroud)
因为有些需要完全匹配字符串.
请注意,这不是万无一失的.网页可以通过以下页面破坏您的正则表达式:
<html>
<script>
// <title>HAHA YOU GOT THE WRONG TITLE</title>
</script>
<title>The Actual title</title>
</head><body></body>
</html>
Run Code Online (Sandbox Code Playgroud)
您可以通过在匹配标题之前使正则表达式更复杂来避免这种可能性.但是,这并没有真正起作用.因为假标题可能在HTML评论<!-- <title></title> -->或/* javascript */评论中.
因此,最好使用实际的HTML解析器.您可以搜索谷歌以找到其中许多.
如果您使用的是Ruby,可以使用nokogiri gem - http://nokogiri.org/.
对于Java - http://htmlparser.sourceforge.net/.
对于python - http://docs.python.org/library/htmlparser.html.