1

我有一个 MySQL 表,里面装满了抓取的新闻文章 HTML 数据。我想用我之前做过很多次的报纸3k模块提取文章文本。

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

不知何故,报纸(或鹅)不喜欢数据库中的字符串,因为返回的 article.text 总是''.

但是,当我使用带有 requests.get 的 URL 并将原始 HTML 提供给 Newspaper 时,它可以工作。所以我猜测来自 MySQL 的数据的格式/编码不同,因此 Newspaper 无法将其理解为 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/
--> ...
4

2 回答 2

1

你得到一个 TYPO3 页面的标题。也许是默认的 404 页面。(获取完整的 HTML)

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

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

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

于 2018-09-04T13:19:05.547 回答
0

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

原来我只需要在数据库中的 HTML 上使用 BeautifulSoup 来将其作为汤。现在它起作用了。

于 2018-09-17T12:58:49.737 回答