📜  从链接 webapge 中提取所有 url (1)

📅  最后修改于: 2023-12-03 15:22:02.795000             🧑  作者: Mango

从链接 webpage 中提取所有 URL

当构建一个网络爬虫,或需要在一个网页中快速找到其它页面时,我们经常需要从一个网页中提取所有的 URL。本文将介绍如何从一个链接网页中提取所有 URL。

步骤

下面是从一个链接网页中提取 URL 的一般步骤:

  1. 获取链接网页的HTML代码。
  2. 从HTML代码中提取所有的链接。
  3. 分析每个链接,确定要提取的URL。
  4. 根据需要对URL进行进一步处理。
获取链接网页的HTML代码

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地址。一般来说,对于一个链接,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地址的介绍。