Python 网页抓取-如何识别网页上的主要内容
给定一个新闻文章网页(来自任何主要新闻来源,如泰晤士报或彭博社),我想确定该网页上的主要文章内容,并扔掉其他杂项元素,如广告、菜单、边栏、用户评论 在大多数主要新闻网站上,什么是通用的方法Python 网页抓取-如何识别网页上的主要内容,python,web-scraping,html-parsing,webpage,Python,Web Scraping,Html Parsing,Webpage,给定一个新闻文章网页(来自任何主要新闻来源,如泰晤士报或彭博社),我想确定该网页上的主要文章内容,并扔掉其他杂项元素,如广告、菜单、边栏、用户评论 在大多数主要新闻网站上,什么是通用的方法 哪些是数据挖掘的好工具或库?(最好是基于python的)这样做没有保证有效的方法,但是您可以使用的一种策略是尝试查找包含最可见文本的元素。提取RSS提要可能更有用()然后分析提要中的数据以获取主要内容。我不会试图从网页上刮取它-太多的东西可能会把它弄糟-而是查看哪些网站发布RSS提要。例如,《卫报》的RSS提
哪些是数据挖掘的好工具或库?(最好是基于python的)这样做没有保证有效的方法,但是您可以使用的一种策略是尝试查找包含最可见文本的元素。提取RSS提要可能更有用(
)然后分析提要中的数据以获取主要内容。我不会试图从网页上刮取它-太多的东西可能会把它弄糟-而是查看哪些网站发布RSS提要。例如,《卫报》的RSS提要包含了其主要文章的大部分文本:
我不知道泰晤士报(伦敦泰晤士报,不是纽约时报)是否有一个,因为它在付费墙后面。祝你好运…有很多方法可以做到这一点,但没有一种方法总是有效的。以下是两个最简单的方法:
- 如果是一组已知的有限的网站:在你的scraper中,将每个url从一个给定网站的普通url转换为打印url(不能在多个网站之间通用)
- 使用arc90可读性算法(参考实现采用javascript)。该算法的简短版本是,它查找带有p标记的div。它将不适用于某些网站,但通常是相当好的
您可以使用这样的脚本:
python webarticle2text.py
Diffbot提供了一个免费的(10.000个URL)API来实现这一点,不知道这种方法是否是您想要的,但它可能会帮助某些人了解Java中的解决方案:
boilerpipe库提供了一些算法,用于检测和删除网页主要文本内容周围多余的“杂波”(样板、模板)
该库已经为常见任务(例如:新闻文章提取)提供了特定的策略,并且还可以轻松地扩展到单个问题设置
但这里也有一个python包装器:
检查以下脚本。真是太神奇了:
from newspaper import Article
URL = "https://www.ksat.com/money/philippines-stops-sending-workers-to-qatar"
article = Article(URL)
article.download()
print(article.html)
article.parse()
print(article.authors)
print(article.publish_date)
#print(article.text)
print(article.top_image)
print(article.movies)
article.nlp()
print(article.keywords)
print(article.summary)
更多文档可在上找到,您应使用以下方式安装:
pip3 install newspaper3k
最近(2020年初)比较了各种提取文章正文的方法,没有广告、菜单、边栏、用户评论等。请参阅。A、数据和评估脚本可用。它比较了此处答案中提到的许多选项,以及一些未提及的选项:
- Scrapinghub
pip安装Scrapinghub AutoExtract
。有一个可用的Python API—有关详细信息,请参见自述,但获取提取的一个简单方法是创建一个包含要提取的URL的.txt文件,然后运行
python -m autoextract urls.txt --page-type article --api-key <API_KEY> --output res.jl
python-m autoextract url.txt--页面类型文章--api键--输出res.jl
NB:for ATOM提要type=“application/ATOM+xml”
这是一个好主意,但这可能是偶然的,因为很多提要只包含一篇文章摘要。这是可以理解的,因为大多数新闻网站的目的是让你看广告,你通常不会在RSS阅读器中看到它。我看到的大多数RSS提要都只有完整文章的简短摘要。看看可读性
书签是如何实现的。这样做的浏览器将对在线广告构成巨大威胁。原始bookmarklet的代码如下:可读性
现在是一项服务,也是一种代码不可用。我认为这是一个非常好的ML使用案例。ML模型可以通过像可读性这样的库进行训练,也可以通过人工监督进行训练。有许多库尝试为您这样做(显然不是100准确)。检查+1的可读性。由于可读性最适合文章页面,而不是主页,因此