在 Newspaper3k 中解析 MySQL 中的 HTML 字符串

Parse HTML String from MySQL in Newspaper3k

我有一个 MySQL Table 充满已抓取的新闻文章 HTML 数据。我想用我以前做过很多次的newspaper3k模块提取文章文本。

现在唯一的区别是我没有提取 URL 并使用 Newspaper 解析结果,而是从 MySQL 数据库中提取原始 HTML 字符串。

Newspaper(或 Goose)不知何故不喜欢数据库中的字符串,因为返回的 article.text 始终是 ''.

然而,当我将 URL 与 requests.get 一起使用并将原始 HTML 提供给报纸时,它就可以工作了。所以我猜测来自 MySQL 的数据与 formatted/encoded 不同,因此报纸不会将其理解为 HTML?!

当我从数据库打印数据时,它看起来像:

<!DOCTYPE html>\n<html lang="de">\n<head>\n\n<...

虽然通过 requests.get 的 html 看起来像:

<!DOCTYPE html>
<html lang="de">
<head>

<meta charset="utf-8">
<!-- 
    This website is powered by TYPO3 - inspiring people to share!
    TYPO3 is a free open source Content Management Framework initially created by Kasper Skaarhoj and licensed under GNU/GPL.
    TYPO3 is copyright 1998-2016 of Kasper Skaarhoj. Extensions are copyright of their respective owners.
    Information and contribution at http://typo3.org/
--> ...

您获得了 TYPO3 页面的 header。也许是默认的 404 页面。 (得到完整的HTML)

如果您的请求应该由 TYPO3 以外的任何其他服务提供,您会错过 (htaccess-) 配置(默认情况下,TYPO3 会回答每个请求,只要没有带有 URL-request 路径的静态文件)

或者您希望 TYPO3 服务器用完整页面之外的其他内容回答您(AJAX:HTML-Snippet 或 JSON?)?
那么你可能在 TYPO3 中没有正确的配置来省略 headers。

由于涉及 TYPO3,您也可以用 TYPO3

标记您的问题

我自己解决了。谢谢大家。

原来我只需要在数据库的 HTML 上使用 BeautifulSoup 把它分开做汤。现在可以了。