使用 Goose 从 HTML 中提取文本(适用于除一个之外的所有文本)

Extracting text from HTML with Goose (working for all but one)

我正在使用 Goose 从各种 URL 中提取标题和正文。除了一个特定的荷兰新闻网站外,它适用于大多数 URL。知道这里出了什么问题吗?

具体有问题的URL是here.

我的代码:

g = Goose()
content_url = g.extract(url=url)
allcontent = content_url.cleaned_text
print allcontent

我期待整个文本,但奇怪的是我只是随机从文章中得到以下段落。

Toerisme was een groot goed toen het een voorrecht was van de elite. Maar nu de massa in het voetspoor treedt van Floortje Dessing gaat het van kwaad tot erger. Het verplaatsen van mensen per cruiseboot of jumbojet is milieubelastend. Toeristen die de bloemetjes buiten zetten, veroorzaken geluidsoverlast in de kleine uurtjes. Toeristenplaatsen veranderen buiten het seizoen in spookoorden. En een bezoek aan de yakherders in Mongolië is een stuk minder interessant als blijkt dat de buren er twee maanden eerder ook waren geweest.

问题有两个原因:

  1. Goose 计算 'main content' 坐 html 元素的方式,特别是它试图找到文本块然后在 html 树中向上移动并更新每个元素的分数封闭元素。作为输出,您会收到基于内部评分的最有价值的元素。

  2. 您的网页结构。如果您检查 html,您会看到文章文本放置在几个不同的 html 块中,因此 Goose 选择其中之一。

解决方案取决于,如果您的目标是解析这个单一站点,您最好使用像 beautiful soup、lxml、grab 等模块来单独解析文本块并将它们合并在一起。如果您有数以百万计的站点要爬网,请接受 goose 开箱即用的功能。