Мало знаний, большой вызов! Эта статья участвует в "Необходимые знания для программистов«Творческая деятельность.
Эффективный экстрактор общих новостей
Исследования в области НЛП потребуют обхода большого количества новостных данных более-менее Писать набор правил обхода для каждого новостного сайта однозначно не подходит, С помощью стороннего софта нужно платить за гибкое сканирование Этот блог всегда найдется В этой статье представлен эффективный единый набор инструментов для извлечения новостей, который идеально подходит для извлечения новостной информации с разных новостных порталов.
GeneralNewsExtractor(GNE)
Это общий модуль извлечения текста новостного веб-сайта, вводящий HTML-код новостной веб-страницы и выводящий текстовое содержимое, заголовок, автора, время публикации, адрес изображения в тексте и исходный код тега, где находится текст. GNE очень эффективно извлекает сотни китайских новостных веб-сайтов, таких как Toutiao, Netease News, Youmin Xingxing, Observer.com, Phoenix.com, Tencent News, ReadHub, Sina News и т. д., почти со 100% точностью.
Исходный код GeneralNewsExtractor (GNE):GitHub.com/kingthen/ge…
Способ установки:
pip install --upgrade gne
Он также очень прост в использовании:
from gne import GeneralNewsExtractor
extractor = GeneralNewsExtractor()
html = '网站源代码'
result = extractor.extract(html)
print(result)
Этот проект называется抽取器
, вместо爬虫
, чтобы избежать ненужных рисков, поэтому вход этого проекта — исходный код HTML, а выход — словарь. Пожалуйста, используйте соответствующий метод для получения HTML-кода целевого веб-сайта.
Супер прост в использовании, он может идеально сканировать новости любого веб-сайта! ! !
Авторский эксперимент: возьмем в качестве примера People's Daily News Пример 1:
import pandas as pd
from gne import GeneralNewsExtractor
import requests
# 获取html
url = "http://edu.people.com.cn/n1/2021/0504/c1006-32094364.html"
rep = requests.get(url)
source = rep.content.decode("gbk",errors='ignore')
# 创建GNE提取器
extractor = GeneralNewsExtractor()
# 传入输入(html)得到结果
result = extractor.extract(source)
# 结果以{“title”,“author”,“publish_time”,“content”,“images”}的字典类型进行返回
print(result)
Сканируйте, как показано ниже:
Кроме того, автор также попробовал несколько популярных новостных порталов, и извлечение в основном прошло успешно.
Пример экспериментального кода 2:
import pandas as pd
from gne import GeneralNewsExtractor
import requests
import chardet
class NewsExtract(object):
def __init__(self):
pass
def extract(self,url):
# 读取链接
rep = requests.get(url)
# 获取网页编码
encoding = chardet.detect(rep.content)["encoding"]
# 解析网页源码
source = rep.content.decode(encoding,errors='ignore')
# 创建GNE提取器
extractor = GeneralNewsExtractor()
# 传入输入(html)得到结果
result = extractor.extract(source)
return result
if __name__ == '__main__':
news_website ={
"01百度新闻":"https://news.cctv.com/2021/10/08/ARTIdfEmRcmTVug3xbAetmHw211008.shtml",
"02新浪新闻":"https://news.sina.com.cn/c/2021-10-08/doc-iktzqtyu0280551.shtml",
"03人民网":"http://opinion.people.com.cn/n1/2021/1008/c1003-32246575.html",
"04澎湃新闻":"https://www.thepaper.cn/newsDetail_forward_14812232",
"05新华网":"http://www.news.cn/politics/leaders/2021-10/07/c_1127935225.htm",
"06腾讯新闻":"https://new.qq.com/omn/TWF20211/TWF2021100800473500.html",
"08百度新闻":"http://baijiahao.baidu.com/s?id=1713042599973678893",
"09凤凰新闻":"https://news.ifeng.com/c/8AAfop0xwa6",
"10搜狐新闻":"https://www.sohu.com/a/493916920_114988?spm=smpc.news-home.top-news3.4.1633693367314ApmGjAj&_f=index_chan08news_8",
}
# 创建提取器
ne = NewsExtract()
# 暴力提取
for idx,url in news_website.items():
try:
print(f"==={idx}:{url}===")
info_news = ne.extract("http://edu.people.com.cn/n1/2021/0504/c1006-32094364.html")
print(info_news)
print()
except:
print(f"{idx}爬取失败")
Веб-сайты, которые пробовали прежде всего, успешно извлекали новостной контент! ~
Таким образом, в процессе сканирования информации с нескольких новостных порталов GNE можно использовать для абстрагирования шагов написания правил для извлечения каждой новостной веб-страницы, и нужно сосредоточиться только на том, как собирать все более и более полные URL-адреса, чтобы эти URL-адреса образуют пул URL-адресов новостей.
⭐⭐⭐ С нетерпением жду более интересного кодинга и подробного обмена мнениями~~~