需要从网页上抓取网址

时间:2015-04-09 22:05:01

标签: java android regex parsing pattern-matching

我需要从一个位于某些javascript代码中的网站上抓取一个网址。

<script type="text/javascript">
    (function() {
        // somewhere..
        $.get("http://someurl.com?q=34343&b=343434&c=343434")...
    });
</script>

我知道网址以http://someurl.com?q=开头,内部至少需要第二个查询参数(&b=),但内容的其余部分未知。

我最初尝试使用 jsoup ,但它并不适合该任务。手动获取页面然后在其上应用正则表达式模式也不是一个更好的选择,因为页面很大。我该怎么办才能快速安全地获取网址?

1 个答案:

答案 0 :(得分:0)

您可以使用此正则表达式

/\$\.get\("(http:\/\/someurl\.com\?q=[\w.\-%#\/]*&b=[\w.\-%&=\/]*)"\)/g

此正则表达式将直接搜索此字符串:

$.get("http://someurl.com?q=

然后它将允许任意数量的URL有效字符作为q的值出现。

然后它会匹配

&b=

然后再用任意数量的有效字符后跟相反的引号。我用

测试了它
MATCH - $.get("http://someurl.com?q=34343&b=343434&c=343434")
MATCH - $.get("http://someurl.com?q=34343&b=13a43&k=343434&c2=something")
FAIL  - $.get("http://someurl.com?q=34343&c=343434&b=343434")
FAIL  - $.get("http://someurl.com?a=34343&b=343434=343434")

如果您只想返回第一个结果,可以从末尾删除全局标识符

/\$\.get\("(http:\/\/someurl\.com\?q=[\w.\-%#\/]*&b=[\w.\-%&=\/]*)"\)/
相关问题