编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

Python 开源神器 GNE 实现新闻页面智能解析无广告,准确率 99%

wxchong 2025-04-27 16:49:53 开源技术 6 ℃ 0 评论

一、为什么选择 GNE?

在爬虫开发中,页面解析始终是核心难题:

  • Diffbot:付费 API 按次收费($299 / 月起),且无法私有化部署
  • BeautifulSoup:需手动编写 XPath 规则,面对复杂页面效率低下
  • Scrapy:依赖大量正则表达式,维护成本高

GNE 库(GeneralNewsExtractor) 的出现彻底改变了这一局面:

  • 零代码解析:4 行 Python 代码实现新闻 / 电商页面核心内容提取
  • 智能去噪:自动过滤广告、评论区、版权声明等干扰信息
  • 完全免费:本地私有化部署,数据隐私安全无忧

二、GNE 核心功能深度解析

1. 新闻页面智能解析(准确率 99%)

# -*- coding: utf-8 -*-
"""
Created on 2025/4/1 22:27
@author: Mz
"""
from pprint import pprint
cookies = {
'SCF': 'Av8yeC-uDrOfbJxkZIGmdOW_cB5HExdQlUUZKouPT1wT-po2-L_ZQbWqduwjFIo7ziHrQJYPj4RQQzYaorSNLac.',
'SUB': '_2A25K7uuYDeRhGeFH7VUZ8ijEzD2IHXVpgmFQrDV8PUNbmtANLVP5kW9Ner49vG9htaGzaOCF7M7lCPUT99A_RtVM',
'SUBP': '0033WrSXqPxfM725Ws9jqgMF55529P9D9WFmJ-4a4efqoBFfkr9pnfBi5NHD95QN1KqN1hzc1hMpWs4DqcjMi--NiK.Xi-2Ri--ciKnRi-zNe0qXSon0SKM7Sntt',
'ALF': '02_1746020552',
'SINAGLOBAL': '1323360869357.4106.1743428555638',
'XSRF-TOKEN': 'bcxi95D_V_-fS51TmxnOdvZV',
'WBPSESS': '8G8AF24XAkAMrmj4hJ1fCcLdiFs3e18ta-QSlUvqVpS7idQ7gF2pg-sxuEEKKfwN2VaTsCJqgmc0WH-tBl-2IUxVT_KFtzn1RoirrVMPv2MgR1N-MuP8c63ILba1PcDkeFCcpFeuNxqxNKvYqsZBwA==',
'_s_tentry': 'weibo.com',
'Apache': '4747421272978.618.1743519025380',
'ULV': '1743519025422:2:1:2:4747421272978.618.1743519025380:1743428555705',
}

headers = {
'accept': 'application/json, text/plain, */*',
'accept-language': 'zh-CN,zh;q=0.9',
'cache-control': 'no-cache',
# 'cookie': 'SCF=Av8yeC-uDrOfbJxkZIGmdOW_cB5HExdQlUUZKouPT1wT-po2-L_ZQbWqduwjFIo7ziHrQJYPj4RQQzYaorSNLac.; SUB=_2A25K7uuYDeRhGeFH7VUZ8ijEzD2IHXVpgmFQrDV8PUNbmtANLVP5kW9Ner49vG9htaGzaOCF7M7lCPUT99A_RtVM; SUBP=0033WrSXqPxfM725Ws9jqgMF55529P9D9WFmJ-4a4efqoBFfkr9pnfBi5NHD95QN1KqN1hzc1hMpWs4DqcjMi--NiK.Xi-2Ri--ciKnRi-zNe0qXSon0SKM7Sntt; ALF=02_1746020552; SINAGLOBAL=1323360869357.4106.1743428555638; XSRF-TOKEN=bcxi95D_V_-fS51TmxnOdvZV; WBPSESS=8G8AF24XAkAMrmj4hJ1fCcLdiFs3e18ta-QSlUvqVpS7idQ7gF2pg-sxuEEKKfwN2VaTsCJqgmc0WH-tBl-2IUxVT_KFtzn1RoirrVMPv2MgR1N-MuP8c63ILba1PcDkeFCcpFeuNxqxNKvYqsZBwA==; _s_tentry=weibo.com; Apache=4747421272978.618.1743519025380; ULV=1743519025422:2:1:2:4747421272978.618.1743519025380:1743428555705',
'origin': 'https://s.weibo.com',
'pragma': 'no-cache',
'priority': 'u=1, i',
'referer': 'https://s.weibo.com/',
'sec-ch-ua': '"Not)A;Brand";v="99", "Google Chrome";v="127", "Chromium";v="127"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Windows"',
'sec-fetch-dest': 'empty',
'sec-fetch-mode': 'cors',
'sec-fetch-site': 'same-site',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36',
'x-requested-with': 'XMLHttpRequest',
}

from gne import GeneralNewsExtractor,ListPageExtractor
import requests
response=requests.get('https://finance.sina.com.cn/jjxw/2025-04-01/doc-inerqrty7841194.shtml')
response.encoding = 'utf-8'
html=response.text
extractor = GeneralNewsExtractor()
result = extractor.extract(html)
pprint(result)
response2=requests.get('https://s.weibo.com/weibo?q=%E5%8C%96%E5%A6%86%E5%93%81',headers=headers,cookies=cookies)
response2.encoding='utf-8'
html2=response2.text
extractor2 = ListPageExtractor()
result = extractor2.extract(html2,'//*[@id="pl_feedlist_index"]/div[2]/div[1]/div[2]/div[1]/div[2]/p')
pprint(result)

输出示例

技术亮点

  • 文本密度算法:通过计算 HTML 文档中文字、标点符号的分布密度,定位正文区域。例如,正文通常包含连续的高密度文本段落,而广告区则呈现零散的文本分布。
  • 启发式规则:内置大量针对新闻网页的特征规则,如:排除固定位置的噪声(如页脚版权声明、侧边栏广告)识别常见正文标签(如div[class*="article"]、p[align="justify"])过滤重复内容(如 “本文来源:XXX”)
  • 视觉特征分析:模拟人类视觉扫描路径,优先提取页面中间区域的内容,排除左右两侧的干扰信息。

2. 与 Diffbot 的核心性能对比

指标

GNE 库

Diffbot 付费 API

新闻解析准确率

99%(中文新闻)

95%(需训练)

数据隐私

完全私有化

数据上传至云端

成本

0 元

$299 / 月起

响应速度

毫秒级

秒级(API 延迟)

三、高级技巧:优化解析效果与性能

1. 自定义去噪规则

# 移除所有广告和评论区
extractor = GeneralNewsExtractor(
noise_node_list=[
'//div[contains(@class, "ad")]',
'//div[@id="comments"]',
'//script', '//style'
]
)

2. 处理反爬虫机制

# 使用代理IP
proxies = {
"http": "http://user:pass@proxy.example.com:8080",
"https": "https://user:pass@proxy.example.com:8080"
}


# 模拟浏览器请求头
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"
}

html = requests.get(url, headers=headers, proxies=proxies).text

五、总结与资源获取

GNE 库的三大核心优势

  1. 零门槛:无需编写复杂规则,开箱即用
  2. 高性价比:完全免费,性能媲美付费 API
  3. 灵活扩展:支持自定义配置,适配各类页面

GitHub 地址
https://github.com/GeneralNewsExtractor/GeneralNewsExtractor

安装命令:pip install gne

六、结语

如果你觉得这篇教程对你有帮助,欢迎点赞 + 收藏 + 关注!你的支持是我持续分享技术干货的动力~

参考资料:

GeneralNewsExtractor官方文档

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表