新闻报纸API
函数调用
- newspaper.article(url: str, language: Optional[str] = None, **kwargs) Article
从URL获取并解析报纸文章的快捷函数。
- 参数
- 返回
文章已下载并解析。
- 返回类型
- 引发
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对象。- 返回类型
- newspaper.mthreading.fetch_news(news_list: List[Union[str, Article, Source]], threads: int = 5) List[Union[Article, Source]]
从来源列表、文章列表或两者获取新闻。线程将被分配以下载和解析来源或文章。如果列表中传入网址,将为其创建一个新的Article对象并进行下载与解析。 不会对文章进行自然语言处理。 如果在检测网址语言时遇到问题,请自行使用语言参数实例化Article对象并传入。
- newspaper.hot()
通过谷歌趋势返回热门搜索词列表
- newspaper.languages()
打印支持的语言列表
配置
- class newspaper.configuration.Configuration
修改文章/来源属性。
- max_title
Article.title最大字符数。title将截断至此长度- 类型
- max_text
Article.text最大字符数。text被截断为此长度- 类型
- max_keywords
通过
Article.nlp()推断的最大关键词数量- 类型
- max_authors
返回的最大作者数量 在
Article.authors- 类型
- max_summary
Article.summary中的最大字符数,截断为此长度- 类型
- max_summary_sent
Article.summary中的最大句子数- 类型
- top_image_settings
查找顶部图片的设置。您可以设置以下内容:
min_width: 图片的最小宽度(默认300)才能被视为顶部图像
min_height: 图片的最小高度(默认200),以判断是否作为顶部图片
min_area: 图片的最小面积(默认值 10000)才能被判定为顶部图片
max_retries: 下载的最大重试次数图片(默认 2)
- 类型
- memorize_articles
如果为True,它将在运行之间缓存并保存文章。这些文章不会被缓存。 它将在不同的
Source.generate_articles()运行之间保存已解析的文章URL。默认值为True。- 类型
- clean_article_html
如果为True,将从文章正文HTML中清理'不必要'的标签。 影响的属性为
Article.article_html。默认为True。- 类型
- http_success_only
如果为True,当html状态码>=400时(例如404页面),将引发
ArticleException。 默认为True。- 类型
- allow_binary_content
如果为 True,它将允许二进制内容 被下载并存储在
Article.html中。允许 此功能用于 Source 构建可能会导致更长的处理时间 并且由于庞大的二进制文件(如电影)可能导致进程挂起, 默认值为 False。- 类型
- ignored_content_types_defaults
内容类型的字典和默认存根内容。这些内容类型不会被下载。
注意:如果
allow_binary_content为 False, 二进制内容将导致Article.download()抛出ArticleBinaryDataException, 并在Source.build()中被跳过。这将覆盖ignored_content_types_defaults中与二进制文件匹配的默认设置。- 类型
- MIN_WORD_COUNT
自版本0.9.2起已弃用:使用
Configuration.min_word_count替代- 类型
- MIN_SENT_COUNT
自版本0.9.2起已弃用:请改用
Configuration.min_sent_count- 类型
- MAX_TITLE
自版本0.9.2起已弃用:请改用
Configuration.max_title- 类型
- MAX_TEXT
自版本 0.9.2 起已弃用:改用
Configuration.max_text- 类型
- MAX_KEYWORDS
自版本0.9.2起已弃用:请改用
Configuration.max_keywords- 类型
- MAX_AUTHORS
自版本0.9.2起已弃用:请改用
Configuration.max_authors- 类型
- MAX_SUMMARY
自版本0.9.2起已弃用:请改用
Configuration.max_summary- 类型
- MAX_SUMMARY_SENT
自版本0.9.2起已弃用:请改用
Configuration.max_summary_sent- 类型
- MAX_FILE_MEMO
自版本0.9.2起已弃用:请改用
Configuration.max_file_memo- 类型
- __getstate__()
返回要被pickle的状态值。
- __setstate__(state)
从解封状态值中恢复状态。
- property browser_user_agent
下载文章时发送给web服务器的用户代理字符串。如果未设置,将默认使用以下值:newspaper/x.x.x 例如 newspaper/0.9.1
- 类型
- property headers
下载文章时发送到网络服务器的标头。 它将为来自
requests库的get调用设置标头。 注意:如果您设置了browser_user_agent属性,它将会 覆盖User-Agent标头。- 类型
- update(**kwargs)
使用给定的关键字参数更新配置对象。
- 参数
**kwargs – 要更新的关键字参数。
文章
文章对象也可以通过快捷方法创建:
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() 以提取信息。
- extractor
内容解析对象。
- 类型
内容提取器
- 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: print("作者:", article.authors) # 输出:作者:['作者1', ...] # Output: Authors: ['Author1', ...] print("发布日期:", article.publish_date) # 输出:发布日期:<日期对象> # Output: Publish Date: 该工具同样允许用户对文本进行自然语言处理(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是一个功能丰富且易于使用的库,在新闻内容抓取和信息提取领域拥有广泛的应用。
- download_state
如果download()成功执行,返回AticleDownloadState.SUCCESS;如果download()失败,返回ArticleDownloadState.FAILED_RESPONSE;如果未调用download(),返回ArticleDownloadState.NOT_STARTED。
- 类型
- 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.parse()
解析先前下载的文章。 如果未调用 download(),将会引发 一个 ArticleException 异常。 填充文章属性,例如:
title、authors、publish_date、text、top_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
- 类型
- doc
源网站首页的已解析 lxml 根节点。
- 类型
lxml.html.HtmlElement
- 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.categories_to_articles()
获取分类,将它们展开成一个巨大的网址列表,并通过url_to_article方法从每个网址中提取文章
- Source.generate_articles()
创建
Source.articles的Article对象列表。 它从所有检测到的类别和RSS订阅源获取URL,根据URL检查 其合理性(使用在urls.valid_url函数中定义的一些启发式方法)。这些可以进一步 使用Source.download_articles()下载
- Source.download_articles()
启动
Source.articles属性中所有Article对象的download()。它可以单线程或多线程运行。 :returns: 已下载的文章列表。 :rtype: List[Article]
- Source.download()
下载源的 HTML,即新闻网站主页
- Source.size()
返回与此新闻源关联的文章数量
类别
订阅源
- 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
- 类型
字符串
异常
- class newspaper.ArticleException
由文章包抛出的通用文章异常。
- class newspaper.ArticleBinaryDataException
URL中出现二进制数据时引发的异常。 如果
Configuration.allow_binary_content为False时将触发此异常。