使用或不使用"#..."提取URLS在文本文件中

时间:2015-08-12 06:25:58

标签: regex url python-3.x

免责声明: 我知道之前有很多关于此类事情的问题,如果这是一个骗局,请标记或者只是给我链接&我可以删除这篇文章。

半免责声明 :我对正则表达式不熟悉,所以我无法自行完成此操作:/

我有一个看起来像这样的文件:

asd<a href="http://asd.asd.asd#asd">asd</a>
asd<a href="https://asd.asd.asd#asd">asd</a>

这么多 asd 因为我不知道是否:

  • httphttps
  • www.或其他
  • #something或者没有

我希望脚本获取此文件,例如input.txt,提取所有网址,使用#___ ,然后输出,每行一个,再输出到另一个文本文件比方说,output.txt。

对于此示例,输出将为:

http://asd.asd.asd#asd
https://asd.asd.asd#asd

再次,抱歉,如果这是重复的,我只是不擅长使用谷歌,并且,提前,谢谢你:)

使用Python 3

2 个答案:

答案 0 :(得分:3)

(?<=href=")[^"]*#[^"]*(?=")

您只需将此正则表达式与re.findall一起使用即可获得结果。请参阅演示。

https://regex101.com/r/uF4oY4/7

如果#是可选的,请使用

(?<=href=")[^"]*(?=")

您可以将其用作

f=open("input.txt","r")

print (re.findall(r'(?<=href=")[^"]*#[^"]*(?=")',f.read()))

答案 1 :(得分:0)

使用BeautifulSoup

from bs4 import BeautifulSoup
s = '''asd<a href="http://asd.asd.asd#asd">asd</a>
asd<a href="https://asd.asd.asd#asd">asd</a>'''
soup = BeautifulSoup(s)
print([i['href'] for i in soup.select('a') if '#' in i['href']])