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/