📅  最后修改于: 2023-12-03 15:22:02.795000             🧑  作者: Mango
当构建一个网络爬虫,或需要在一个网页中快速找到其它页面时,我们经常需要从一个网页中提取所有的 URL。本文将介绍如何从一个链接网页中提取所有 URL。
下面是从一个链接网页中提取 URL 的一般步骤:
Python中,我们一般使用urllib
库来获取网页的HTML代码。如下所示,使用urllib.request.urlopen()
函数即可获取链接网页的HTML代码。
import urllib.request
response = urllib.request.urlopen('https://example.com/')
html = response.read()
我们可以使用Python中的BeautifulSoup
库来解析HTML代码,找到其中所有的链接。如下所示,我们可以使用soup.find_all('a')
函数找到网页中的所有链接。
from bs4 import BeautifulSoup
soup = BeautifulSoup(html, 'html.parser')
links = soup.find_all('a')
对于每个链接,我们需要分析它的属性,定位其中的URL地址。一般来说,对于一个链接,URL是通过href
属性定义的。如下所示,我们可以使用link.get('href')
函数从每个链接中提取其URL地址。
for link in links:
url = link.get('href')
在得到所有URL地址后,我们可以对其进行一些进一步处理。例如,去掉不需要的URL地址,或者将相对地址(如/path/to/page
)转换为绝对地址(如https://example.com/path/to/page
)。
下面是一个完整的程序示例,展示如何从一个链接网页中提取所有URL地址。
import urllib.request
from bs4 import BeautifulSoup
from urllib.parse import urljoin
def extract_urls(url):
response = urllib.request.urlopen(url)
html = response.read()
soup = BeautifulSoup(html, 'html.parser')
links = soup.find_all('a')
urls = set()
for link in links:
url = link.get('href')
if url:
url = urljoin(base=url, url=url)
urls.add(url)
return urls
以上就是如何从一个链接网页中提取所有URL地址的介绍。