温馨提示×

python怎么爬取同一网站所有网页

小亿
157
2023-12-14 22:06:37
栏目: 云计算

要爬取同一网站的所有网页,可以使用递归的方式来实现。

首先,需要导入requests库来发送HTTP请求;导入BeautifulSoup库来解析HTML内容。

然后,定义一个函数,接收一个URL作为参数。在函数内部,首先使用requests.get()方法来获取网页的内容,并将其存储为一个变量。然后使用BeautifulSoup库来解析网页内容,找到其中的所有链接。

接下来,遍历所有链接,并判断链接是否属于同一网站。如果是同一网站的链接,那么将其作为参数再次调用爬取函数,实现递归爬取。

最后,测试程序,调用爬取函数并传入起始URL。程序将会从起始URL开始,递归地爬取同一网站的所有网页。

以下是一个示例代码:

import requests
from bs4 import BeautifulSoup
from urllib.parse import urljoin

def scrape_website(url):
    response = requests.get(url)
    soup = BeautifulSoup(response.text, "html.parser")
    
    # 获取所有链接
    links = soup.find_all("a")
    
    for link in links:
        href = link.get("href")
        
        # 判断链接是否是同一网站的链接
        if href.startswith(url):
            # 创建绝对URL
            absolute_url = urljoin(url, href)
            
            # 递归调用爬取函数
            scrape_website(absolute_url)

# 测试程序
scrape_website("https://example.com")

以上代码中的https://example.com是一个示例起始URL,你需要将其替换为你要爬取的网站的起始URL。

0