【问题标题】:extracting hyperlinks from rtf with python用python从rtf中提取超链接
【发布时间】:2020-10-28 13:12:31
【问题描述】:

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

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 文件为空...(我想将这些 url 写入一个 csv 文件...有可能吗?)

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

我不知道怎么做。

【问题讨论】:

  • mathiasbynens.be/demo/url-regex 有完善的正则表达式用于 URL 捕获使用其中任何一种。
  • 谢谢,我会调查的。
  • 没用。可能是因为我不确定如何使用它们。我总是收到错误代码。

标签: python csv url extract rtf


【解决方案1】:

Python 的内置函数open 不能单独解码 RTF 文件。您需要安装另一个软件包来处理它。还有另一个可以帮助从文本中提取 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} )

希望这能满足您的需求。

【讨论】:

  • 谢谢,我试试这个!
  • 变得复杂:似乎 striprtf.rtf_to_text( rtf_file.read()) 正在剥离所有超链接。 :D 我看看能不能绕过它...
  • 成功了,哇,谢谢!除了我必须将 striprtf.rtf_to_text(rtf_file.read()) 更改为 rtf_file.read()。所以似乎 striprtf 在这方面没有用。
猜你喜欢
  • 2022-10-17
  • 2015-02-28
  • 1970-01-01
  • 2021-02-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-18
  • 2016-08-26
  • 1970-01-01
相关资源
最近更新 更多