【问题标题】:crawling wikipedia pages with jsoup by href通过 href 使用 jsoup 抓取维基百科页面
【发布时间】:2017-04-04 18:05:28
【问题描述】:

我正在尝试通过此 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 ....etc,但它对我不起作用,所以我希望从匹配的标签中获取链接:/wiki/[A- Za-z]*|_ 而不是这样的:https://en.wikipedia.org/wiki/Wikipedia:Administrators%27_noticeboard

【问题讨论】:

    标签: java regex web-crawler jsoup wikipedia


    【解决方案1】:

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

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

    2. 基本上,您当前的正则表达式所说的是“给我 '/wiki/',然后给我下划线或任意长度的英文字母序列”,因此删除 'or' 子句并包含允许字符列表中的下划线。

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

    我用 jsoup 玩了一点,我认为从维基百科中解析出的类似的东西几乎就是你要找的东西:

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

    顺便说一句,在您遇到正则表达式问题时,您可能会发现https://regex101.com/ 对调试非常有用

    【讨论】:

    猜你喜欢
    • 2018-07-16
    • 1970-01-01
    • 2022-01-10
    • 2019-05-24
    • 1970-01-01
    • 1970-01-01
    • 2017-04-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多