繁体   English   中英

使用 python 从 rtf 中提取超链接

[英]extracting hyperlinks from rtf with python

我正在尝试使用 python 从 rtfs 中提取超链接。 我有一个 1000 rtfs 到 go 如此想如果这可以减轻我的任务。 但是我的代码没有提取文章的链接,只是提取了该数据库的首页 这是我写的:

import csv
import re

with open('text.rtf', 'r') as file:
    for line in file:
        urls = re.findall('https?://(?:[-\w.]|(?:%[\da-fA-F]{2}))+', line)
        print(urls)
        
with open ('some.csv','w') as fw:
    writer = csv.writer(fw)
    writer.writerows(urls)

   

这是打印出来的:

[]

[]

[]

['https://database.com']

[]

[]

csv 文件为空...(我想将这些网址写入 csv 文件...甚至可能吗?)

我想这需要修改:'https?://(?:[-\w.]|(?:%[\da-fA-F]{2}))+', line'

我不知道怎么。

Python 内置的 function open不能单独解码 RTF 文件。 您需要安装另一个 package 来处理这个问题。 还有另一个可以帮助从文本中提取 url。 不过,不确定它是否是最准确的 url 提取器解决方案。

pip install striprtf urlextract

回到您的主文件中,您可以尝试以下操作:

import csv
from striprtf import striprtf
from urlextract import URLExtract

with open( 'text.rtf', 'r') as rtf_file:
    file_text = striprtf.rtf_to_text( rtf_file.read() )

extractor = URLExtract()
urls = extractor.find_urls(file_text)

with open('some.csv', 'w', newline='') as fw:
    fieldnames = ['urls']
    writer = csv.DictWriter(fw, fieldnames = fieldnames)
    writer.writeheader()
    for link in urls:
        writer.writerow( {'urls': link} )

希望这会给你你所需要的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM