trafilatura python web 数据获取库

trafilatura python web 数据获取库,比较适合进行爬虫,数据提取,支持输出数据为csv,json,html,md,txt,xml

包含的特性

  • 高级web 爬虫以及文本发现
  • 并行处理在线以及离线输入内容
  • 灵活的配置支持,包含了元数据,格式,链接,表格
  • 多输出格式,包含了文本,markdown,json,html,xml
  • 额外扩展,支持语言检测,gui,速度优化

参考使用

集成了tenacity 的一个示例

  • demo.py

主要是集成了tenacity retry 能力,测试trafilatura 的web content markdown 效果,因为实际我们进行爬取肯定会有异常的,这样能提升数据爬取的质量

from trafilatura import extract,fetch_url
 
from  tenacity import *
 
def content(url:str):
    downloaded = fetch_url(url)
    result  = extract(downloaded,include_images=True, output_format="markdown", with_metadata=True)
    print(result)
    return  {
        'result': result,
        'title': "rongfengliang-荣锋亮",
    }
 
 
def return_last_value(retry_state):
    print("return_last_value",retry_state)
    return retry_state.outcome.result()
 
def is_rongfengliang(content):
    print("is_rongfengliang",content)
    return content is not None and content.get("title") =="rongfengliang-荣锋亮"
 
# will return False after trying 3 times to get a different result
@retry(
       stop=stop_after_attempt(3),
       retry_error_callback=return_last_value,
       retry=retry_if_result(is_rongfengliang))
def eventually_return_false():
    result = content("https://www.cnblogs.com/rongfengliang/p/18280856")
    return result
 
 
return_last_value = eventually_return_false()
 
print("return_last_value",return_last_value)

说明

在基于RAG 的系统开发中,如何提升web content 内容的质量数据提取,内容格式都是比较重要的,trafilatura 是一个值得尝试的工具,效果还是很不错的,对于html 中噪音可以很好的处理

参考资料

https://github.com/adbar/trafilatura
https://trafilatura.readthedocs.io/en/latest/
https://github.com/jd/tenacity
http://tenacity.readthedocs.io/

posted on   荣锋亮  阅读(70)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2019-09-07 minikube 安装试用
2017-09-07 gitlab Failed to register this runner. Perhaps you are having network problems runner 注册失败问题解决

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示