使用jsoup通过href抓取维基百科页面

时间:2017-04-04 18:05:29

标签: java regex web-crawler jsoup wikipedia

我正试图通过此ligne代码从jsoup的维基百科页面获取网址:

Elements linksOnPage = document.select("a[href~=\"/wiki/\"(([A-Za-z])*|_)]");

获取链接看起来像:https://en.wikipedia.org/wiki/United_Stathttps://en.wikipedia.org/wiki/English_people ....等,但它对我不起作用,所以我希望从匹配的标记中获取链接:/ wiki / [A-ZA-Z] * | _ 而不是像这样:https://en.wikipedia.org/wiki/Wikipedia:Administrators%27_noticeboard

1 个答案:

答案 0 :(得分:0)

我对你的任务有几点想法:

  1. 看来,您不需要只包含拉丁字母的文章,因此允许的字符列表可以扩展为数字等。

  2. 基本上,你现在的正则表达式是“给我'/ wiki /',然后给我任意长度的英文字母下划线或序列”,所以删除'或'条款并包括在允许的字符列表中加下划线。

  3. 要避免包含“:”的特殊链接,可以检查regexp匹配是否仅在匹配整个href属性后才停止。为了实现它,你可以在正则表达式的末尾添加'$'。

  4. 我玩了一些jsoup和类似的东西从维基百科解析了你想要的东西,我想:

    Elements allInfoLinks = doc.select("a[href~=\\/wiki\\/([a-zA-Z0-9_/&?]+)$]");
    

    顺便说一句,在每种情况下你都遇到正则表达式的问题,你可能会发现https://regex101.com/对调试非常有用