新闻报纸API

函数调用

newspaper.article(url: str, language: Optional[str] = None, **kwargs) Article

从URL获取并解析报纸文章的快捷函数。

参数
  • url (str) – 要下载和解析的文章的URL。

  • language (str) – 要下载和解析的文章语言。

  • input_html (str) – 要解析的文章的HTML。此参数用于预下载的文章。如果设置了此参数,则不会发出下载请求。

  • kwargs – 传递给Article构造函数的任何其他关键字参数。

返回

文章已下载并解析。

返回类型

Article

引发

ArticleException – 如果文章无法下载或解析。

newspaper.build(url='', dry=False, only_homepage=False, only_in_path=False, input_html=None, config=None, **kwargs) Source

返回一个已构建的 Source 对象,无需下载或解析文章

参数
  • url (str) – 要构建的源(新闻网站)的网址。例如, https://www.cnn.com

  • dry (bool) - 如果为真,将构建源对象但不会下载或解析。

  • only_homepage (bool) – 如果为真,源对象将仅解析源的主页。

  • only_in_path (bool) – 如果为true,源对象将仅解析与源主页同一路径下的文章。通过这种方式可以抓取特定类别。默认为False。

  • input_html (str) – 要解析的源HTML。使用此参数可将缓存的HTML传递给源对象。

  • config (Configuration) – 用于源的配置对象。

  • kwargs – 传递给Source构造函数的任何其他关键字参数。 如果省略配置对象,可以在此处添加任何配置选项。

返回

构建的 Source 对象。

返回类型

Source

newspaper.mthreading.fetch_news(news_list: List[Union[str, Article, Source]], threads: int = 5) List[Union[Article, Source]]

从来源列表、文章列表或两者获取新闻。线程将被分配以下载和解析来源或文章。如果列表中传入网址,将为其创建一个新的Article对象并进行下载与解析。 不会对文章进行自然语言处理。 如果在检测网址语言时遇到问题,请自行使用语言参数实例化Article对象并传入。

参数
  • news_list (List[Union[str, Article, Source]]) – 源、文章、URL或它们混合的列表。

  • threads (int) – 用于获取的线程数。这会影响到 一次从新闻列表中获取多少项目。为了 控制在Source对象中使用的线程数,请使用 Configuration.`number_threads`设置。这可能会导致 线程数较高。最大线程数将是 threads * Configuration.`number_threads`。

返回

文章或来源列表。

返回类型

列表[联合[Article, Source]]

newspaper.hot()

通过谷歌趋势返回热门搜索词列表

newspaper.languages()

打印支持的语言列表

配置

class newspaper.configuration.Configuration

修改文章/来源属性。

min_word_count

文章文本中最小的单词标记数量

类型

int

min_sent_count

文章文本中的最小句子数量

类型

int

max_title

Article.title 最大字符数。title 将截断至此长度

类型

int

max_text

Article.text 最大字符数。text 被截断为此长度

类型

int

max_keywords

通过Article.nlp()推断的最大关键词数量

类型

int

max_authors

返回的最大作者数量 在 Article.authors

类型

int

max_summary

Article.summary中的最大字符数,截断为此长度

类型

int

max_summary_sent

Article.summary中的最大句子数

类型

int

max_file_memo

每个新闻源我们缓存的最大网址数量

类型

int

top_image_settings

查找顶部图片的设置。您可以设置以下内容:

  • min_width: 图片的最小宽度(默认300)

    才能被视为顶部图像

  • min_height: 图片的最小高度(默认200),以

    判断是否作为顶部图片

  • min_area: 图片的最小面积(默认值 10000)

    才能被判定为顶部图片

  • max_retries: 下载的最大重试次数

    图片(默认 2)

类型

dict

memorize_articles

如果为True,它将在运行之间缓存并保存文章。这些文章不会被缓存。 它将在不同的Source.generate_articles()运行之间保存已解析的文章URL。默认值为True。

类型

bool

disable_category_cache

如果为True,将不会缓存 Source 类别网址。默认False。

类型

bool

fetch_images

如果为 False,将不下载图像 以验证它们是否符合 top_image_settings 中的设置。 默认为 True。

类型

bool

follow_meta_refresh

如果为 True,在下载文章时将遵循元刷新重定向。默认为 False。

类型

bool

clean_article_html

如果为True,将从文章正文HTML中清理'不必要'的标签。 影响的属性为Article.article_html。默认为True。

类型

bool

http_success_only

如果为True,当html状态码>=400时(例如404页面),将引发ArticleException。 默认为True。

类型

bool

requests_params

get调用中来自requests库的任何参数

类型

dict

number_threads

多线程下载所使用的线程数量

类型

int

verbose

如果为 True,将输出调试信息 已弃用: 请改用标准的 python logging 模块

类型

bool

thread_timeout_seconds

线程超时

类型

int

allow_binary_content

如果为 True,它将允许二进制内容 被下载并存储在 Article.html 中。允许 此功能用于 Source 构建可能会导致更长的处理时间 并且由于庞大的二进制文件(如电影)可能导致进程挂起, 默认值为 False。

类型

bool

ignored_content_types_defaults

内容类型的字典和默认存根内容。这些内容类型不会被下载。

注意:如果 allow_binary_content 为 False, 二进制内容将导致 Article.download() 抛出 ArticleBinaryDataException, 并在 Source.build() 中被跳过。这将覆盖 ignored_content_types_defaults 中与二进制文件匹配的默认设置。

类型

dict

use_cached_categories

如果设置为False,缓存的类别 将被忽略,并且 Source 将重新计算类别

每次构建时列出。

类型

bool

MIN_WORD_COUNT

自版本0.9.2起已弃用:使用Configuration.min_word_count替代

类型

int

MIN_SENT_COUNT

自版本0.9.2起已弃用:请改用Configuration.min_sent_count

类型

int

MAX_TITLE

自版本0.9.2起已弃用:请改用Configuration.max_title

类型

int

MAX_TEXT

自版本 0.9.2 起已弃用:改用 Configuration.max_text

类型

int

MAX_KEYWORDS

自版本0.9.2起已弃用:请改用Configuration.max_keywords

类型

int

MAX_AUTHORS

自版本0.9.2起已弃用:请改用Configuration.max_authors

类型

int

MAX_SUMMARY

自版本0.9.2起已弃用:请改用 Configuration.max_summary

类型

int

MAX_SUMMARY_SENT

自版本0.9.2起已弃用:请改用Configuration.max_summary_sent

类型

int

MAX_FILE_MEMO

自版本0.9.2起已弃用:请改用Configuration.max_file_memo

类型

int

__getstate__()

返回要被pickle的状态值。

__setstate__(state)

从解封状态值中恢复状态。

property browser_user_agent

下载文章时发送给web服务器的用户代理字符串。如果未设置,将默认使用以下值:newspaper/x.x.x 例如 newspaper/0.9.1

类型

str

property headers

下载文章时发送到网络服务器的标头。 它将为来自requests库的get调用设置标头。 注意:如果您设置了browser_user_agent属性,它将会 覆盖User-Agent标头。

类型

str

property language

语言使用的ISO-639-1双字母代码。 如果未设置,Article将尝试使用网站的元信息 来获取语言。默认使用英语

类型

字符串

property proxies

get call 的代理设置来自 requests 库。如果未设置,则默认为不使用代理。

类型

可选[dict]

property request_timeout

get调用的超时时间来自 requests 库。如果未设置,将默认为7秒。

类型

可选[int,元组[int,int]]

update(**kwargs)

使用给定的关键字参数更新配置对象。

参数

**kwargs – 要更新的关键字参数。

property use_meta_language

表示是从网站读取的元语言还是显式设置的语言。

返回

如果使用了元语言则为True,如果语言被明确设置则为False。

返回类型

bool

文章

文章对象也可以通过快捷方法创建:

a = newspaper.article(url, language='en', ...)

等价于:

a = newspaper.Article(url, language='en', ...)
a.download()
a.parse()

你可以将任何Article构造函数的参数传递给快捷方法。

class newspaper.Article(url: str, title: str = '', source_url: str = '', read_more_link: str = '', config: Optional[Configuration] = None, **kwargs: Any)

用于报纸的文章摘要。

此对象获取并保存单篇文章的信息。 要下载文章,请调用download()。然后调用parse() 以提取信息。

config

此文章实例的活动配置。 您可以为任何文章实例使用不同的设置。

类型

配置

extractor

内容解析对象。

类型

内容提取器

source_url

该新闻源的主页 URL,即拥有此文章的来源

类型

字符串

url

文章链接。这是用于下载当前 文章的。如果发生重定向(通过元刷新或阅读 更多链接),这将与原始网址不同。

类型

字符串

original_url

文章的原始网址。这是传递给构造函数的网址。在发生重定向的情况下,此网址不会改变。

类型

字符串

title

解析文章的标题。通过在构造函数中提供一个标题,可以强制/覆盖它。

类型

str

一个用于全文链接的xpath选择器。确保该选择器适用于所有情况,而不仅限于某篇特定文章。如有需要,可以使用多个xpath选择器,用|分隔。

类型

字符串

top_image

文章顶部图片的URL。它会尝试从文章中发现的图片中猜测最适合作为主图的图片。

类型

字符串

meta_img

图片链接由元数据提供

类型

str

images

当前文章中的所有图片URL列表

类型

列表[str]

movies

文章正文中的视频链接列表

类型

列表[str]

text

文章正文的解析版本。它将被截断至前 config.max_text 个字符。

类型

str

text_cleaned

已解析的 clean_top_node 内容版本。 它将被截断至前 config.max_text 个字符。 .. 已弃用:: 0.9.3

现在与 Article.text 相同 clean_top_node 已被移除

类型

newspaper4k 是一个功能强大且简洁的Web爬虫工具,专为新闻提取而设计。其能够自动解析HTML并提取出包含标题、文本内容、作者及发布日期在内的有用信息。

Newspaper4k 简单易用,无需过多配置即可快速上手。它依赖于一些关键的Python库,如Beautiful Soup用于解析和nltk用于自然语言处理,以提升文本提取的准确性。

示例代码展示如何利用它来提取文章:

# 导入必要的模块 # Import necessary modules from newspaper import Article # 初始化文章对象 # Initialize article object article = Article('https://example.com/news_article.html') article.download() # 下载HTML内容 # Download HTML content article.parse() # 解析并提取信息 # Parse and extract information # 打印提取的信息 # Print extracted information print("标题:", article.title) # 输出:标题:<标题文本> # Output: Title: print("正文:", article.text) # 输出:正文:<正文内容> # Output: Text: <article text=""> print("作者:", article.authors) # 输出:作者:['作者1', ...] # Output: Authors: ['Author1', ...] print("发布日期:", article.publish_date) # 输出:发布日期:<日期对象> # Output: Publish Date: <date object=""> </date></article>

该工具同样允许用户对文本进行自然语言处理(NLP)操作,例如关键词提取和文章摘要生成:

# 执行NLP处理 # Perform NLP processing article.nlp() # 打印关键词和摘要 # Print keywords and summary print("关键词:", article.keywords) # 输出:关键词:['关键词1', '关键词2', ...] # Output: Keywords: ['Keyword1', 'Keyword2', ...] print("摘要:", article.summary) # 输出:摘要:<摘要文本> # Output: Summary:

由于其出色的性能和便捷的集成能力,Newspaper4k在处理新闻文章和其他类似网页内容时是一个常用且可靠的工具。对于开发者、研究人员和数据工程师而言,Newspaper4k提供了一个高效方式来完成信息检索和处理任务。

总体而言,Newspaper4k是一个功能丰富且易于使用的库,在新闻内容抓取和信息提取领域拥有广泛的应用。

keywords

本文的推断关键词列表。 该列表将通过自然语言处理方法生成。它将截断至前config.max_keywords个关键词。

类型

列表[str]

keyword_scores

关键词及其得分的一个字典。

类型

字典[str, float]

meta_keywords

由元数据提供的关键词列表。 它将被截断至前config.max_keywords个关键词。

类型

列表[str]

tags

从文章正文中提取的标签列表

类型

集合[str]

authors

从文章中解析出的作者列表。它将会被截断至前config.max_authors位作者。

类型

列表[str]

publish_date

从文章中解析出的发布日期。如果未找到有效日期,将返回空字符串。

类型

str

summary

由自然语言处理方法生成的文章摘要。将截断至前config.max_summary_sent个句子。

类型

字符串

html

文章页面的原始HTML。

类型

字符串

article_html

文章正文的原始HTML代码。

类型

字符串

is_parsed

如果已调用 parse() 则为 True。

类型

bool

download_state

如果download()成功执行,返回AticleDownloadState.SUCCESS;如果download()失败,返回ArticleDownloadState.FAILED_RESPONSE;如果未调用download(),返回ArticleDownloadState.NOT_STARTED

类型

int

download_exception_msg

下载失败时的异常信息。

类型

str

history

来自requests.get调用的重定向历史记录。

类型

列表[str]

meta_description

从元数据中提取的描述。

类型

字符串

meta_lang

从元数据中提取的语言。 如果未设置 config.language,将使用此值 来解析文章,而不是 config.language 的值。

类型

字符串

meta_favicon

从元数据中提取的网站收藏图标URL。

类型

字符串

meta_site_name

从元数据中提取的网站名称。

类型

字符串

meta_data

从元标签中提取的附加元数据。

类型

字典[str, str]

从元数据中提取的文章规范URL

类型

字符串

top_node

原始DOM树的顶层节点。 它包含检测到的文章正文的文本节点。该节点 位于文档DOM树上。

类型

lxml.html.HtmlElement

doc

下载的HTML的完整DOM。它是原始的DOM树。

类型

lxml.html.HtmlElement

clean_doc

DOM树的清理版本 .. 已弃用:: 0.9.3

现在与 Article.doc 相同

类型

lxml.html.HtmlElement

Article.__init__(url: str, title: str = '', source_url: str = '', read_more_link: str = '', config: Optional[Configuration] = None, **kwargs: Any)

构建文章类。不会下载或解析文章

参数
  • url (str) – 要解析的输入URL。可以是URL或文件路径。

  • title (str, optional) – 如果在网页中无法提取标题,则使用默认标题。默认为空字符串。

  • source_url (str, optional) – 文章来源的主网站URL。 如果留空,将从url中推断。默认为“”。

  • read_more_link (str, optional) – 一个用于全文链接的xpath选择器,当存在带"阅读更多"按钮的预览页面并跳转到另一个url时(即使在不同域上)。确保该选择器适用于所有情况,而非仅针对特定文章。如有需要,可使用多个以|分隔的xpath选择器。默认为“”。

  • config (Configuration, optional) – 用于配置的设置项

  • empty (如果这篇文章未进行下载/解析/自然语言处理。若保留此状态) –

  • () –

  • 无。 (使用默认设置默认为) –

关键词参数

**kwargs – 任何配置类属性都可以通过初始化关键字参数进行重写。 此外,您可以指定以下任意请求参数: headers, cookies, auth, timeout, allow_redirects, proxies, verify, cert

引发

ArticleException – 解析和准备文章时出错

Article.download()

下载链接的HTML内容,如果您正在进行批量异步下载文章,请不要使用

参数
  • input_html (str, optional) – 要解析文章的缓存版本。 它将从此字符串加载HTML,而无需尝试访问文章URL。如果您在构造函数中设置了read_more_link xpath,并且未将ignore_read_more设置为true, 它将尝试跟随找到的read_more链接(如果有的话)。 默认为None。

  • 标题 (str, 可选) – 强制指定文章标题。默认值为 None。

  • recursion_counter (int, optional) – 用于防止无限递归

  • 0. (由于meta_refresh。默认为) –

  • ignore_read_more (bool, optional) – 如果为真,下载过程将会

  • 构造函数. (忽略在中设置的任何类型的"read_more" xpath) –

  • 错误。 (默认值) –

返回

自己

返回类型

Article

Article.parse()

解析先前下载的文章。 如果未调用 download(),将会引发 一个 ArticleException 异常。 填充文章属性,例如: titleauthorspublish_datetexttop_image 等。 :returns: self :rtype: Article

Article.nlp()

方法期望已经运行了 download()parse()。 它将执行关键词提取和摘要生成

来源

class newspaper.Source(url: str, read_more_link: str = '', config: Optional[Configuration] = None, **kwargs)

Sources 是像 huffpost 或 cnn 这样的在线新闻网站的抽象。 该对象会创建属于该来源的文章 URL 列表,以及 该来源拥有的新闻类别列表(世界、政治等)。 这些类别是从来源主页的结构中推断出来的。

url

源网站主页的URL。例如 https://www.cnn.com

类型

字符串

config

此源的配置对象。

类型

配置

domain

来源网站主页的域名,例如 cnn.com

类型

字符串

scheme

源主页的协议。例如 https

类型

字符串

categories

属于来源的Category对象列表。

类型

list

feeds

属于该来源的Feed对象列表,包含有关该来源RSS订阅源的信息。

类型

list

articles

属于源的 Article 对象列表。

类型

列表

brand

来源的域名根。例如:cnn

类型

str

description

源描述信息,如来源的元标签中所发现

类型

字符串

doc

源网站首页的已解析 lxml 根节点。

类型

lxml.html.HtmlElement

html

由requests下载的源主页的html。

类型

str

favicon

源网站标志图标的URL。

类型

str

logo_url

来源徽标的URL。

类型

字符串

Source.__init__(url: str, read_more_link: str = '', config: Optional[Configuration] = None, **kwargs)
该源配置对象将被传递到该源所有子文章中,除非另有指定或重新设置。
参数
  • url (str) – 源主页的网址。例如 https://www.cnn.com

  • read_more_link (str, optional) – 用于指向全文链接的xpath选择器。请确保该选择器适用于所有情况, 不仅仅针对特定文章。如有需要,你可以使用 多个以|分隔的xpath选择器。默认为“”。

  • config (Configuration, 可选) – 此源的配置对象。默认为 None。

关键字参数

**kwargs – 任何配置类的属性都可以通过初始化关键字参数进行覆盖。 此外,您可以指定以下任何requests参数: headers, cookies, auth, timeout, allow_redirects, proxies, verify, cert

Source.build()

使用lxml封装下载和基础解析功能。 执行下载、解析、获取分类和文章链接、 解析RSS订阅源,最终生成一个Article 对象列表。文章内容尚未下载。

参数
  • input_html (str, optional) – 要解析的源的缓存HTML。 保留为None以下载HTML。默认为None。

  • only_homepage (bool, 可选参数) – 如果为真,源对象将仅解析源的主页。默认为False。

  • only_in_path (bool, optional) – 如果为真,源对象将仅解析与源主页在同一路径下的文章。通过这种方式可以抓取特定类别。 默认为False。

Source.feeds_to_articles()

返回基于源RSS源中找到的文章的Article对象列表

Source.categories_to_articles()

获取分类,将它们展开成一个巨大的网址列表,并通过url_to_article方法从每个网址中提取文章

Source.generate_articles()

创建Source.articlesArticle对象列表。 它从所有检测到的类别和RSS订阅源获取URL,根据URL检查 其合理性(使用在urls.valid_url函数中定义的一些启发式方法)。这些可以进一步 使用Source.download_articles()下载

参数
  • limit (int, optional) – 生成的新闻文章的最大数量。 默认为 5000。

  • only_in_path (bool, 可选参数) – 如果为真,源对象将仅解析与源主页相同路径下的文章。您可以通过这种方式抓取特定类别。默认为 False。

Source.download_articles()

启动Source.articles属性中所有Article对象的download()。它可以单线程或多线程运行。 :returns: 已下载的文章列表。 :rtype: List[Article]

Source.download()

下载源的 HTML,即新闻网站主页

Source.size()

返回与此新闻源关联的文章数量

类别

class newspaper.source.Category(url: str, html: Optional[str] = None, doc: Optional[Element] = None)

类别对象是新闻源主页上新闻类别的表示形式。例如,在cnn.com上,“world”类别将是一个类别对象。

url

该类别主页的URL。例如 https://www.cnn.com/world

类型

str

html

该类别的首页通过requests下载的HTML代码。

类型

str

doc

该类别主页的解析后的 lxml 根节点。

类型

lxml.html.HtmlElement

订阅源

class newspaper.source.Feed(url: str, rss: Optional[str] = None)

一个feed对象是新闻源主页上RSS订阅源的一种表示形式。例如,在cnn.com上,订阅源 “http://rss.cnn.com/rss/edition_world.rss”将代表一个feed对象。 .. attribute:: url

资讯源主页的网址。例如 http://rss.cnn.com/rss/edition_world.rss

类型

字符串

rss

该订阅源内容的 RSS(XML)由 requests 下载。

类型

str

异常

class newspaper.ArticleException

由文章包抛出的通用文章异常。

class newspaper.ArticleBinaryDataException

URL中出现二进制数据时引发的异常。 如果Configuration.allow_binary_content为False时将触发此异常。