1.整体方案解决思路
1.先解决量的问题再解决质的问题
2.解决文章详情提取和发布时间提取正确性的问题
2.1 解决时间提错的问题,反复调优时间解析算法
2.2 正文包含大量噪音,不断优化做降噪处理
3.全新开发了一套发布时间抽取算法和正文提取算法
2.分阶段实现步骤
2.1 url有效性校验,标准化
由于我们手中的url库,url的质量层次不齐,必须摸清情况,清洗
- 无效url删除
- 如果不含有www,添加www依旧无法访问那么认定无效;
使用工具requests,无法请求则认定
- 如果不含有www,添加www依旧无法访问那么认定无效;
- url变换更新
- 更新缺少www的,使用工具requests
- 更新url重定向一类的,使用工具selenium
- url能够到达的页面与预期的页面不同,做更新
- 通常遇到的都是导航页,将该url直接替换为新闻列表页,手工操作
- url访问的页面为ajax加载,更新url并且定向解析
2.2 从站点首页抽取链接
1.提取所有链接
1.1 在链接抽取中新增对于需要click事件触发才能产生的链接兼容
1.2 提取所有a标签,are标签的src,href,等属性
2.过滤垃圾链接
2.1 过滤跨域
2.2 过滤本页
2.3 过滤垃圾信息脏数据
2.4 链接清洗
2.5 链接属性识别
2.6 ajax加载网站兼容,解决方案是绕过和splash
2.7 详情解析算法优化(时间)
2.8 说明文档编辑和规范化
3.链接性质识别
3.1主要结合标题和url各自的特征值,以及两者结合对比进行识别
3.2识别详情链接
3.3识别板块链接
2.3正文解析+时间解析
- 利用自建解析算法,提取正文和发布时间
- 自建解析算法 > 点我看详情
- 模拟用户识别原理;利用对段落的次序,段落间的换行数,每个段落的长度.....的计算,提取降噪后的文本
- 过滤垃圾详情页,通过计算提取到的正文的长度来判断是否是垃圾链接(低于阀值丢弃)
- 过滤垃圾详情页,通过计算中文,数字,英文彼此间的占比关系,过滤垃圾文本
- 提取核心文本,通过最长文本段定位文章核心位置,通过与核心位置进行悬挂高度对比,过滤非正文文本
- 提取发布时间:用正则提取页面所有时间,
根据顺序两两对比一旦有时间str长度不一样这返回该对比的最大值,
如果所有日期的长度都一样,则返回第一个元素,
如果只提取到一个日期,那么返回该日期,
如果提取不到日期,那么则认为该新闻为垃圾数据,放弃该新闻的落库
- 对于时间抽取的总结:
- 未来时间: 由于新闻不存在发布时间,导致提取到正文的未来时间
- None : 由于详情页不存在任何时间导致抽取结果为空
- 碎片化 : 提取的时间不包含日,那么时间戳或解析成负值
- 非发布 : 提取到时间由于位置计算错误,导致提取到的是正文的时间
网友评论