[英]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.