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.cn.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/