如何从HTML代码中正确提取URL?

时间:2017-03-06 22:56:06

标签: python html url html-content-extraction

我已将网站的HTML代码保存在计算机上的.txt文件中。我想使用以下代码从此文本文件中提取所有URL:

def get_net_target(page):
    start_link=page.find("href=")
    start_quote=page.find('"',start_link)
    end_quote=page.find('"',start_quote+1)
    url=page[start_quote+1:end_quote]
    return url
my_file = open("test12.txt")
page = my_file.read()
print(get_net_target(page))

但是,脚本只打印第一个URL,但不打印所有其他链接。这是为什么?

1 个答案:

答案 0 :(得分:2)

您需要实现一个循环来浏览所有网址。

print(get_net_target(page))仅打印page中找到的第一个网址,因此您需要一次又一次地调用此函数,每次都用子串page替换page[end_quote+1:],直到找不到更多的网址。

为了帮助您入门,next_index将存储最后的结束网址,然后循环将检索以下网址:

next_index = 0 # the next page position from which the URL search starts

def get_net_target(page):
  global next_index

  start_link=page.find("href=")
  if start_link == -1: # no more URL
    return ""
  start_quote=page.find('"',start_link)
  end_quote=page.find('"',start_quote+1)
  next_index=end_quote
  url=page[start_quote+1:end_quote]
  end_quote=5
  return url


my_file = open("test12.txt")
page = my_file.read()

while True:
    url = get_net_target(page)
    if url == "": # no more URL
        break
    print(url)
    page = page[next_index:] # continue with the page

另外要小心,因为您只检索"内部的链接,但它们可以被'括起来,甚至没有......