网站首页 > 开源技术 正文
一、为什么选择 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 库的三大核心优势:
- 零门槛:无需编写复杂规则,开箱即用
- 高性价比:完全免费,性能媲美付费 API
- 灵活扩展:支持自定义配置,适配各类页面
GitHub 地址:
https://github.com/GeneralNewsExtractor/GeneralNewsExtractor
安装命令:pip install gne
六、结语
如果你觉得这篇教程对你有帮助,欢迎点赞 + 收藏 + 关注!你的支持是我持续分享技术干货的动力~
参考资料:
GeneralNewsExtractor官方文档
猜你喜欢
- 2025-04-27 作为一个seoer,教你如何利用高级搜索指令
- 2025-04-27 Python:使用docx2pdf将Word文档转换为PDF
- 2025-04-27 一些超实用搜索窍门,让你真正学会搜索
- 2025-04-27 最详细的 maven 教程,可以收藏
- 2025-04-27 不会写文档,叫什么高级程序员
- 2025-04-27 神技巧:你真的会用“百度搜索”吗?
- 2025-04-27 看 Bolt 与 Cursor 携手,探秘 ChatPDF 智能应用实战开发
- 2025-04-27 SITEFACTORY粘贴图片自动上传到服务器(JAVA版)
- 2025-04-27 SCI论文格式模板使用教程(1)从期刊官网下载manuscript模板
- 2025-04-27 百度高级检索小妙招
你 发表评论:
欢迎- 04-27谁是2020年最强Python库?年度Top10出炉
- 04-27基于uniapp开发的前端低代码平台附源码
- 04-27EasyCaching:让缓存更简单!
- 04-27兰亭集势建海外版微店
- 04-27获取流量的方法论,简单才有效
- 04-27微信官方跑去卖手机壳?48元你买不
- 04-27投入1.7万亿美元推进核武器现代化,美国干的这件事比贸易讹诈更危险!
- 04-27抓住毒枭儿子的墨西哥警察遭报复,停车场内被围堵射击155枪
- 最近发表
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)