使用 href 的 jsoup 爬取维基百科页面
crawling wikipedia pages with jsoup by href
我正在尝试通过此 ligne 代码从 jsoup 中的维基百科页面获取 url:
Elements linksOnPage = document.select("a[href~=\"/wiki/\"(([A-Za-z])*|_)]");
获得链接看起来像:https://en.wikipedia.org/wiki/United_Stat or https://en.wikipedia.org/wiki/English_people ....等等,但它对我不起作用,所以我希望从匹配的标签中获得链接:/wiki/[A- Za-z]*|_
而不是这样的东西:https://en.wikipedia.org/wiki/Wikipedia:Administrators%27_noticeboard
我对你的任务有几个想法:
看来,你不需要只包含拉丁字母的文章,所以允许的字符列表可以扩展到数字等
基本上,您当前的正则表达式是 "give me '/wiki/', then give me either underscore or sequence of english letters of any length",因此删除 'or' 子句并在允许字符列表中包含下划线是有意义的。
为避免包含“:”的特殊链接,您可以检查正则表达式匹配是否仅在匹配整个 href 属性后才停止。要实现它,您可以在正则表达式的末尾添加“$”。
我玩了一下 jsoup 和类似这样的东西,从维基百科解析出来的东西几乎就是你要找的东西,我想:
Elements allInfoLinks = doc.select("a[href~=\/wiki\/([a-zA-Z0-9_/&?]+)$]");
顺便说一下,在每种情况下,您都遇到正则表达式问题,您可能会发现 https://regex101.com/ 对调试非常有用
我正在尝试通过此 ligne 代码从 jsoup 中的维基百科页面获取 url:
Elements linksOnPage = document.select("a[href~=\"/wiki/\"(([A-Za-z])*|_)]");
获得链接看起来像:https://en.wikipedia.org/wiki/United_Stat or https://en.wikipedia.org/wiki/English_people ....等等,但它对我不起作用,所以我希望从匹配的标签中获得链接:/wiki/[A- Za-z]*|_ 而不是这样的东西:https://en.wikipedia.org/wiki/Wikipedia:Administrators%27_noticeboard
我对你的任务有几个想法:
看来,你不需要只包含拉丁字母的文章,所以允许的字符列表可以扩展到数字等
基本上,您当前的正则表达式是 "give me '/wiki/', then give me either underscore or sequence of english letters of any length",因此删除 'or' 子句并在允许字符列表中包含下划线是有意义的。
为避免包含“:”的特殊链接,您可以检查正则表达式匹配是否仅在匹配整个 href 属性后才停止。要实现它,您可以在正则表达式的末尾添加“$”。
我玩了一下 jsoup 和类似这样的东西,从维基百科解析出来的东西几乎就是你要找的东西,我想:
Elements allInfoLinks = doc.select("a[href~=\/wiki\/([a-zA-Z0-9_/&?]+)$]");
顺便说一下,在每种情况下,您都遇到正则表达式问题,您可能会发现 https://regex101.com/ 对调试非常有用