簡體   English   中英

正則表達式從頁面提取所有URL

[英]Regex to extract all URLs from a page

在SO上已經問過幾次這個問題,但我無法獲得任何答案才能正常工作。 我需要提取href鏈接和純文本中頁面中的所有URL。 我不需要正則表達式的各個組。 我需要一個字符串列表,即頁面中的URL。 有人可以指出一個好的例子嗎?

我想使用Regexs而不是BeautifulSoup等來做到這一點。

謝謝。

HTML不是常規語言 ,因此無法通過常規表達式進行解析。

using regular expressions, and/or to recognize a restricted subset of URIs, but that way lies madness (lengthy debugging processes, inaccurate results). 可以使用正則表達式做出 ,和/或識別URI的受限子集,但這就是瘋狂(冗長的調試過程,不准確的結果)。

也就是說,如果您願意走這條路,請參閱John Gruber的正則表達式

def extract_urls(your_text):
  url_re = re.compile(r'\b(([\w-]+://?|www[.])[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|/)))')
  for match in url_re.finditer(your_text):
    yield match.group(0)

可以如下使用:

>>> for uri in extract_urls('http://foo.bar/baz irc://freenode.org/bash'):
...   print uri
http://foo.bar/
irc://freenode.org

我知道您可以在PHP中使用DOM對象來解析HTML文檔。 我不熟悉python,但這可能會有所幫助: http : //docs.python.org/library/xml.dom.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM