2013-10-16 27 views
-2

我想获得所有链接在一个网页,这个功能只有一个链接,但需要得到所有的链接!我当然知道所需要的一环真实的,但我不知道使用得到所有链接网站在源代码html(python)

我需要得到所有链接

def get_next_target(page): 
start_link = page.find('<a href=') 
start_quote = page.find('"', start_link) 
end_quote = page.find('"', start_quote + 1) 
url = page[start_quote + 1:end_quote] 
return url, end_quote 
+0

请明确说明您的需求。 – ajkumar25

+0

你是什么意思的“一个环”? – hexafraction

+0

如果需要,请使用'html.parse'软件包中的'HTMLParser'和'urllib.parser.urljoin'。不要试图只搜索一个子字符串或甚至一个正则表达式,这是行不通的(好吧,不是所有情况下)。当然,如果你只有一个页面需要处理,你可以编写一个快速而脏的程序,但是如果你有很多来自不同源的页面,这并不明智。 – 2013-10-16 10:27:27

回答

1

您可以使用lxml为:

import lxml.html 

def get_all_links(page): 
    document = lxml.html.parse(page) 
    return document.xpath("//a") 
2

这是一个HTML解析器派上用场。我建议BeautifulSoup

from bs4 import BeautifulSoup as BS 
def get_next_target(page) 
    soup = BS(page) 
    return soup.find_all('a', href=True) 
0
site = urllib.urlopen('http://somehwere/over/the/rainbow.html') 
site_data = site.read() 
for link in BeautifulSoup(site_data, parseOnlyThese=SoupStrainer('a')): 
    if link.has_attr('href'): 
     print(link['href']) 
+0

用“BS”做的另一种方法。 – Torxed