[爬虫练手]学校院系专业整理

news2025/1/31 11:03:46
  • 本文基于上一篇博客:[爬虫练手]整理学校招生信息

文章目录

  • 一.改进上一篇的代码
  • 二,嵌套爬虫,提取院系和专业信息
    • 目前完整代码
  • 三.让AI润色一下代码
    • 完整代码
    • 代码学习
      • 加入print语句,方便理解
  • 其他

一.改进上一篇的代码

上一篇那个页面没有反爬措施😂

为了让代码逻辑更清晰些,之后思路可复用,找了一个模板,套进去

import requests
from bs4 import BeautifulSoup

# Step 1: 访问网页并获取响应内容
def get_html_content(url):
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
    try:
        response = requests.get(url, headers=headers)
        response.raise_for_status()
        response.encoding = response.apparent_encoding
        html_content = response.text
        return html_content
    except Exception as e:
        print(f"网络请求异常:{e}")
        return None

# Step 2: 解析网页并提取目标数据
def parse_html(html_content):
    soup = BeautifulSoup(html_content, 'html.parser')
    rows = soup.select('tbody tr')
    
    # Variables to hold rowspan data
    remaining_rows_major_name = 0
    current_major_name = None

    remaining_rows_category = 0
    current_category = None

    remaining_rows_subjects = 0
    current_subjects = None

    remaining_rows_college_detail = 0
    current_college_name = None
    current_college_link = None

    data_list = []

    for row in rows:
        # ... 此处省略,见上一篇blog

        data_list.append({
            "Major Name": major_name,
            "Category": category,
            "Subject Requirements": subject_req,
            "College Name": college_name,
            "College Link": college_link,
            "Major Detail Name": major_detail_name,
            "Major Detail Link": major_detail_link
        })

    return data_list

# Step 3: 存储数据到本地或其他持久化存储服务器中
def store_data(result_list):
    # TODO:编写存储代码,将数据结果保存到本地或其他服务器中
    pass

# Step 4: 控制流程,调用上述函数完成数据抓取任务
if __name__ == '__main__':
    target_url = "http://www.example.com"
    html_content = get_html_content(target_url)
    if html_content:
        result_list = parse_html(html_content)
        store_data(result_list)
    else:
        print("网页访问失败")

二,嵌套爬虫,提取院系和专业信息

  • 那个网站里面,院系和专业点击之后都会跳转
    在这里插入图片描述
  • 那么去看看他们的页面是咋样的

在这里插入图片描述

在这里插入图片描述
而且这个class是唯一的
在这里插入图片描述

  • 这样的话就不难了

  • 我希望能通过一次爬取,建立院系的文件夹,然后把该院系的所有专业介绍存入该文件夹下

  • 同时需要注意一个问题,爬取出来的txt,不希望是那么多文字都在一行,希望原文分段,我的txt里面也分段

    
    def store_data(item):
        # 获取学院链接和专业详情链接
        college_link = item['College Link']
        major_detail_link = item['Major Detail Link']
    
        # 如果学院链接存在,则进行以下处理
        if college_link:
            college_name = item['College Name']
            # 获取学院的HTML内容
            college_html = get_html_content(f"http://zsb.hitwh.edu.cn{college_link}")
            if college_html:
                # 使用BeautifulSoup解析HTML内容
                college_soup = BeautifulSoup(college_html, 'html.parser')
                # 从解析后的内容中查找class为"content"的部分
                college_content = college_soup.select_one('.content')
                if college_content:
                    # 为学院创建一个目录,以保存相关文件
                    college_dir = f"{college_name}"
                    # 如果目录不存在,则创建
                    if not os.path.exists(college_dir):
                        os.makedirs(college_dir)
                    # 定义文件名并打开文件,准备写入数据
                    filename = f"{college_dir}/{college_name}.txt"
                    with open(filename, mode='w', encoding='utf-8') as file:
                        # 查找所有段落,并逐一写入文件
                        paragraphs = college_content.find_all('p')
                        for paragraph in paragraphs:
                            file.write(paragraph.get_text() + '\n\n')
        
        # 如果专业详情链接存在,则进行以下处理
        if major_detail_link:
            major_detail_name = item['Major Detail Name']
            # 获取专业详情的HTML内容
            major_detail_html = get_html_content(
                f"http://zsb.hitwh.edu.cn{major_detail_link}")
            if major_detail_html:
                # 使用BeautifulSoup解析HTML内容
                major_detail_soup = BeautifulSoup(major_detail_html, 'html.parser')
                # 从解析后的内容中查找class为"content"的部分
                major_detail_content = major_detail_soup.select_one('.content')
                if major_detail_content:
                    college_name = item['College Name']
                    # 使用学院的名称作为目录
                    major_dir = f"{college_name}"
                    # 如果目录不存在,则创建
                    if not os.path.exists(major_dir):
                        os.makedirs(major_dir)
                    # 定义文件名并打开文件,准备写入数据
                    filename = f"{major_dir}/{major_detail_name}.txt"
                    with open(filename, mode='w', encoding='utf-8') as file:
                        # 查找所有段落,并逐一写入文件
                        paragraphs = major_detail_content.find_all('p')
                        for paragraph in paragraphs:
                            file.write(paragraph.get_text() + '\n\n')
    

目前完整代码


import os
import requests
from bs4 import BeautifulSoup
from concurrent.futures import ThreadPoolExecutor

# Step 1: 访问网页并获取响应内容


def get_html_content(url):
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
    }
    try:
        response = requests.get(url, headers=headers)
        response.raise_for_status()
        response.encoding = response.apparent_encoding
        html_content = response.text
        return html_content
    except Exception as e:
        print(f"网络请求异常:{e}")
        return None

# Step 2: 解析网页并提取目标数据


def parse_html(html_content):
    soup = BeautifulSoup(html_content, 'html.parser')
    rows = soup.select('tbody tr')

    data = []

    # Variables for handling rowspan attributes
    remaining_rows_major_name = 0
    current_major_name = None

    remaining_rows_category = 0
    current_category = None

    remaining_rows_subjects = 0
    current_subjects = None

    remaining_rows_college_detail = 0
    current_college_name = None
    current_college_link = None

    for row in rows:
        # Handling major_name
        if remaining_rows_major_name > 0:
            major_name = current_major_name
            remaining_rows_major_name -= 1
        else:
            major_name_ele = row.select_one('.left-td')
            if major_name_ele:
                major_name = major_name_ele.get_text(strip=True)
                current_major_name = major_name
                if 'rowspan' in major_name_ele.attrs:
                    remaining_rows_major_name = int(
                        major_name_ele['rowspan']) - 1

        # Handling category
        if remaining_rows_category > 0:
            category = current_category
            remaining_rows_category -= 1
        else:
            category_ele = row.select_one('.text-center')
            if category_ele:
                category = category_ele.get_text(strip=True)
                current_category = category
                if 'rowspan' in category_ele.attrs:
                    remaining_rows_category = int(category_ele['rowspan']) - 1

        # Handling subjects
        if remaining_rows_subjects > 0:
            subject_req = current_subjects
            remaining_rows_subjects -= 1
        else:
            subjects = row.select('td.text-center')
            subject_req = [subj.get_text(strip=True) for subj in subjects[1:]] if len(
                subjects) > 1 else []
            current_subjects = subject_req
            if subjects and 'rowspan' in subjects[0].attrs:
                remaining_rows_subjects = int(subjects[0]['rowspan']) - 1

        # Handling college_detail
        if remaining_rows_college_detail > 0:
            college_name = current_college_name
            college_link = current_college_link
            remaining_rows_college_detail -= 1
        else:
            college_detail = row.select_one('td[rowspan] > a')
            if college_detail:
                college_name = college_detail.get_text(strip=True)
                college_link = college_detail['href']
                current_college_name = college_name
                current_college_link = college_link
                if 'rowspan' in college_detail.find_parent().attrs:
                    remaining_rows_college_detail = int(
                        college_detail.find_parent()['rowspan']) - 1

        # Handling major_detail
        major_detail = row.select_one('.right-td > a')
        major_detail_name = major_detail.get_text(
            strip=True) if major_detail else None
        major_detail_link = major_detail['href'] if major_detail else None

        # Appending data to the list
        data.append({
            "Major Name": major_name,
            "Category": category,
            "Subject Requirements": subject_req,
            "College Name": college_name,
            "College Link": college_link,
            "Major Detail Name": major_detail_name,
            "Major Detail Link": major_detail_link
        })

    return data

# Step 3: 存储数据到本地或其他持久化存储服务器中


def store_data(item):
    college_link = item['College Link']
    major_detail_link = item['Major Detail Link']
    if college_link:
        college_name = item['College Name']
        college_html = get_html_content(
            f"http://zsb.hitwh.edu.cn{college_link}")
        if college_html:
            college_soup = BeautifulSoup(college_html, 'html.parser')
            college_content = college_soup.select_one('.content') #.content 的意思是 class="content"
            if college_content:
                college_dir = f"{college_name}"
                if not os.path.exists(college_dir):
                    os.makedirs(college_dir)
                filename = f"{college_dir}/{college_name}.txt"
                with open(filename, mode='w', encoding='utf-8') as file:
                    paragraphs = college_content.find_all('p')
                    for paragraph in paragraphs:
                        file.write(paragraph.get_text() + '\n\n')
    if major_detail_link:
        major_detail_name = item['Major Detail Name']
        major_detail_html = get_html_content(
            f"http://zsb.hitwh.edu.cn{major_detail_link}")
        if major_detail_html:
            major_detail_soup = BeautifulSoup(major_detail_html, 'html.parser')
            major_detail_content = major_detail_soup.select_one('.content')
            if major_detail_content:
                college_name = item['College Name']
                major_dir = f"{college_name}"
                if not os.path.exists(major_dir):
                    os.makedirs(major_dir)
                filename = f"{major_dir}/{major_detail_name}.txt"
                with open(filename, mode='w', encoding='utf-8') as file:
                    paragraphs = major_detail_content.find_all('p')
                    for paragraph in paragraphs:
                        file.write(paragraph.get_text() + '\n\n')


# Step 4: 控制流程,调用上述函数完成数据抓取任务
if __name__ == '__main__':
    url = "http://zsb.hitwh.edu.cn/home/major/index"
    html_content = get_html_content(url)
    if html_content:
        data_list = parse_html(html_content)
        with ThreadPoolExecutor(max_workers=10) as executor: # ThreadPoolExecutor是一个线程池,max_workers是最大线程数
            for item in data_list:
                executor.submit(store_data, item)
    else:
        print("网页访问失败")


三.让AI润色一下代码

我让copilot和chatgpt让代码更高效些,然后引入了多线程和异步

完整代码

import os
import aiohttp
import aiofiles
from bs4 import BeautifulSoup
import asyncio


async def get_html_content(url):
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
    }
    async with aiohttp.ClientSession() as session:
        async with session.get(url, headers=headers) as response:
            if response.status == 200:
                return await response.text()
            return None


# Step 2: 解析网页并提取目标数据


def parse_html(html_content):
    soup = BeautifulSoup(html_content, 'html.parser')
    rows = soup.select('tbody tr')

    data = []

    # Variables for handling rowspan attributes
    remaining_rows_major_name = 0
    current_major_name = None

    remaining_rows_category = 0
    current_category = None

    remaining_rows_subjects = 0
    current_subjects = None

    remaining_rows_college_detail = 0
    current_college_name = None
    current_college_link = None

    for row in rows:
        # Handling major_name
        if remaining_rows_major_name > 0:
            major_name = current_major_name
            remaining_rows_major_name -= 1
        else:
            major_name_ele = row.select_one('.left-td')
            if major_name_ele:
                major_name = major_name_ele.get_text(strip=True)
                current_major_name = major_name
                if 'rowspan' in major_name_ele.attrs:
                    remaining_rows_major_name = int(
                        major_name_ele['rowspan']) - 1

        # Handling category
        if remaining_rows_category > 0:
            category = current_category
            remaining_rows_category -= 1
        else:
            category_ele = row.select_one('.text-center')
            if category_ele:
                category = category_ele.get_text(strip=True)
                current_category = category
                if 'rowspan' in category_ele.attrs:
                    remaining_rows_category = int(category_ele['rowspan']) - 1

        # Handling subjects
        if remaining_rows_subjects > 0:
            subject_req = current_subjects
            remaining_rows_subjects -= 1
        else:
            subjects = row.select('td.text-center')
            subject_req = [subj.get_text(strip=True) for subj in subjects[1:]] if len(
                subjects) > 1 else []
            current_subjects = subject_req
            if subjects and 'rowspan' in subjects[0].attrs:
                remaining_rows_subjects = int(subjects[0]['rowspan']) - 1

        # Handling college_detail
        if remaining_rows_college_detail > 0:
            college_name = current_college_name
            college_link = current_college_link
            remaining_rows_college_detail -= 1
        else:
            college_detail = row.select_one('td[rowspan] > a')
            if college_detail:
                college_name = college_detail.get_text(strip=True)
                college_link = college_detail['href']
                current_college_name = college_name
                current_college_link = college_link
                if 'rowspan' in college_detail.find_parent().attrs:
                    remaining_rows_college_detail = int(
                        college_detail.find_parent()['rowspan']) - 1

        # Handling major_detail
        major_detail = row.select_one('.right-td > a')
        major_detail_name = major_detail.get_text(
            strip=True) if major_detail else None
        major_detail_link = major_detail['href'] if major_detail else None

        # Appending data to the list
        data.append({
            "Major Name": major_name,
            "Category": category,
            "Subject Requirements": subject_req,
            "College Name": college_name,
            "College Link": college_link,
            "Major Detail Name": major_detail_name,
            "Major Detail Link": major_detail_link
        })

    return data

# Step 3: 存储数据到本地或其他持久化存储服务器中


async def store_data(semaphore, item):
    async with semaphore:
        college_link = item['College Link']
        major_detail_link = item['Major Detail Link']
        if college_link:
            college_name = item['College Name']
            college_html = await get_html_content(   # 使用await关键字
                f"http://zsb.hitwh.edu.cn{college_link}")
            if college_html:
                college_soup = BeautifulSoup(college_html, 'html.parser')
                college_content = college_soup.select_one('.content')
                if college_content:
                    await write_to_file(college_name, college_content, "college_intro")

        if major_detail_link:
            major_detail_name = item['Major Detail Name']
            major_detail_html = await get_html_content(   # 使用await关键字
                f"http://zsb.hitwh.edu.cn{major_detail_link}")
            if major_detail_html:
                major_detail_soup = BeautifulSoup(
                    major_detail_html, 'html.parser')
                major_detail_content = major_detail_soup.select_one('.content')
                if major_detail_content:
                    college_name = item['College Name']
                    await write_to_file(college_name, major_detail_content, major_detail_name)


async def write_to_file(college_name, content, filename=None):
    dir_path = f"{college_name}"
    if not os.path.exists(dir_path):
        os.makedirs(dir_path)
    if not filename:
        filename = f"{college_name}.txt"
    else:
        filename = f"{college_name}/{filename}.txt"
    async with aiofiles.open(filename, mode='w', encoding='utf-8') as file:
        paragraphs = content.find_all('p')
        for paragraph in paragraphs:
            await file.write(paragraph.get_text() + '\n\n')

if __name__ == '__main__':
    url = "http://zsb.hitwh.edu.cn/home/major/index"

    loop = asyncio.get_event_loop()
    html_content = loop.run_until_complete(get_html_content(url))

    if html_content:
        data_list = parse_html(html_content)
        semaphore = asyncio.Semaphore(10)  # 限制并发数量为10
        tasks = [store_data(semaphore, item) for item in data_list]
        loop.run_until_complete(asyncio.gather(*tasks))
    else:
        print("网页访问失败")


代码学习

AI时代很大的好处就是,一个东西可以反复提问深挖,很多想法只要提出,就能很快先看到demo, 而且可以询问AI的思路,相当于不断在向高手学习和请教

  • 先让AI给出解释
    • 异步编程基础:

      异步编程允许你在等待一个操作完成的时候(例如,网络请求、文件读写等)执行其他任务。你可以将其想象为在家做饭。你把米放进电饭煲并开始煮饭,而不是等米饭煮好才开始准备其他食材,你会立刻开始切菜、炒菜。这就是异步:你在等待一个任务(煮饭)完成的时候执行其他任务(切菜、炒菜)。

    • async/await:

      • async:定义一个异步函数。此函数在调用时不会立即执行,而是返回一个coroutine对象。
      • await:在异步函数中等待另一个异步操作完成并返回结果。在我们的例子中,get_html_content函数是异步的,使用await来等待HTTP请求的响应。
      • 考虑上面的做饭例子,async就像是开始煮饭的操作,而await就像是你检查饭是否已经煮好。
    • aiohttp:

      传统的HTTP库,例如requests,在发送请求时会阻塞,直到收到响应。而aiohttp是一个异步HTTP客户端/服务器框架,它不会阻塞,可以与asyncio一起使用,实现真正的并发HTTP请求。

    • asyncio.Semaphore:

      这是一个基本的同步原语,用于限制并发数量。在我们的代码中,我们使用它来确保同一时间只有10个请求。你可以将其看作餐厅只有10个座位,因此只能同时容纳10位顾客。

    • aiofiles:
      文件读写通常是一个阻塞操作,但aiofiles提供了一个异步的方式来处理文件操作,使得你可以在等待文件写入/读取时执行其他任务。

    • BeautifulSoup:

      一个用于从HTML和XML文件中提取数据的库。在我们的代码中,我们使用它来解析网页并获取所需的数据。

    • Python的异步事件循环:

      asyncio.get_event_loop()获取当前的事件循环,loop.run_until_complete()则运行事件循环,直到指定的任务完成。在这份代码中,我们用它来运行我们的异步任务。

加入print语句,方便理解

# ... [其他代码片段不变]

# 定义异步函数用于获取网页内容
async def get_html_content(url):
    print(f"开始获取网页内容: {url}")
    # ... [其他代码片段不变]
    print(f"完成获取网页内容: {url}")
    return await response.text()

# ... [其他代码片段不变]

# 异步存储数据到本地或其他持久化存储服务器中
async def store_data(semaphore, item):
    print(f"开始存储任务: {item['College Name']} - {item['Major Detail Name']}")
    # ... [其他代码片段不变]
    print(f"完成存储任务: {item['College Name']} - {item['Major Detail Name']}")

# ... [其他代码片段不变]

# 异步写入文件
async def write_to_file(college_name, content, filename=None):
    print(f"开始写入文件: {filename}")
    # ... [其他代码片段不变]
    print(f"完成写入文件: {filename}")

# ... [其他代码片段不变]

打印结果如下

开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/index
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/index
开始存储任务: 信息科学与工程学院 - 自动化
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=4
开始存储任务: 新能源学院 - 电气工程及其自动化
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=5
开始存储任务: 材料科学与工程学院 - 智能材料与结构
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=7
开始存储任务: 计算机科学与技术学院(软件学院) - 计算机科学与技术
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=6
开始存储任务: 计算机科学与技术学院(软件学院) - 人工智能
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=6
开始存储任务: 计算机科学与技术学院(软件学院) - 网络空间安全
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=6
开始存储任务: 信息科学与工程学院 - 通信工程
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=4
开始存储任务: 信息科学与工程学院 - 海洋信息工程
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=4
开始存储任务: 信息科学与工程学院 - 电子信息工程
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=4
开始存储任务: 信息科学与工程学院 - 微电子科学与工程
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=4
开始存储任务: 理学院 - 光电信息科学与工程
开始存储任务: 海洋工程学院 - 机械设计制造及其自动化
开始存储任务: 海洋工程学院 - 机器人工程
开始存储任务: 汽车工程学院 - 车辆工程
开始存储任务: 汽车工程学院 - 智能车辆工程
开始存储任务: 信息科学与工程学院 - 测控技术与仪器
开始存储任务: 新能源学院 - 储能科学与工程
开始存储任务: 材料科学与工程学院 - 材料成型及控制工程
开始存储任务: 材料科学与工程学院 - 焊接技术与工程
开始存储任务: 计算机科学与技术学院(软件学院) - 软件工程
开始存储任务: 计算机科学与技术学院(软件学院) - 服务科学与工程
开始存储任务: 海洋工程学院 - 船舶与海洋工程
开始存储任务: 海洋工程学院 - 土木工程
开始存储任务: 新能源学院 - 储能科学与工程
开始存储任务: 信息科学与工程学院 - 海洋信息工程
开始存储任务: 信息科学与工程学院 - 测控技术与仪器
开始存储任务: 汽车工程学院 - 交通工程
开始存储任务: 汽车工程学院 - 车辆工程
开始存储任务: 海洋科学与技术学院 - 环境工程
开始存储任务: 海洋科学与技术学院 - 生物工程
开始存储任务: 海洋科学与技术学院 - 海洋技术
开始存储任务: 海洋科学与技术学院 - 化学工程与工艺
开始存储任务: 材料科学与工程学院 - 智能材料与结构
开始存储任务: 材料科学与工程学院 - 材料成型及控制工程
开始存储任务: 材料科学与工程学院 - 材料科学与工程
开始存储任务: 材料科学与工程学院 - 焊接技术与工程
开始存储任务: 理学院 - 数学与应用数学
开始存储任务: 理学院 - 信息与计算科学
开始存储任务: 经济管理学院 - 工商管理
开始存储任务: 经济管理学院 - 会计学
开始存储任务: 经济管理学院 - 国际经济与贸易
开始存储任务: 经济管理学院 - 信息管理与信息系统
开始存储任务: 语言文学学院 - 英语
开始存储任务: 语言文学学院 - 朝鲜语
开始存储任务: 海洋工程学院 - 船舶与海洋工程(中外合作)
开始存储任务: 材料科学与工程学院 - None
开始存储任务: 海洋工程学院 - None
开始存储任务: 海洋科学与技术学院 - None
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=4
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=7
开始写入文件: college_intro
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=4
开始写入文件: college_intro
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=5
开始写入文件: college_intro
开始写入文件: college_intro
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=4
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=6
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=4
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=6
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=6
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=4
开始写入文件: college_intro
开始写入文件: college_intro
开始写入文件: college_intro
开始写入文件: college_intro
开始写入文件: college_intro
开始写入文件: college_intro
完成写入文件: 材料科学与工程学院/college_intro.txt
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=29
完成写入文件: 信息科学与工程学院/college_intro.txt
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=18
完成写入文件: 新能源学院/college_intro.txt
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=20
完成写入文件: 信息科学与工程学院/college_intro.txt
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=17
完成写入文件: 信息科学与工程学院/college_intro.txt
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=16
完成写入文件: 信息科学与工程学院/college_intro.txt
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=15
完成写入文件: 信息科学与工程学院/college_intro.txt
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=13
完成写入文件: 计算机科学与技术学院(软件学院)/college_intro.txt
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=24
完成写入文件: 计算机科学与技术学院(软件学院)/college_intro.txt
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=23
完成写入文件: 计算机科学与技术学院(软件学院)/college_intro.txt
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=47
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=24
开始写入文件: 人工智能
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=15
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=20
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=47
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=16
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=29
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=23
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=13
开始写入文件: 通信工程
开始写入文件: 电气工程及其自动化
开始写入文件: 网络空间安全
开始写入文件: 海洋信息工程
开始写入文件: 智能材料与结构
开始写入文件: 计算机科学与技术
开始写入文件: 自动化
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=17
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=18
开始写入文件: 电子信息工程
开始写入文件: 微电子科学与工程
完成写入文件: 材料科学与工程学院/智能材料与结构.txt
完成存储任务: 材料科学与工程学院 - 智能材料与结构
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=8
完成写入文件: 计算机科学与技术学院(软件学院)/网络空间安全.txt
完成存储任务: 计算机科学与技术学院(软件学院) - 网络空间安全
完成写入文件: 信息科学与工程学院/海洋信息工程.txt
完成存储任务: 信息科学与工程学院 - 海洋信息工程
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=1
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=1
完成写入文件: 信息科学与工程学院/微电子科学与工程.txt
完成存储任务: 信息科学与工程学院 - 微电子科学与工程
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=3
完成写入文件: 信息科学与工程学院/电子信息工程.txt
完成存储任务: 信息科学与工程学院 - 电子信息工程
完成写入文件: 信息科学与工程学院/通信工程.txt
完成存储任务: 信息科学与工程学院 - 通信工程
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=3
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=4
完成写入文件: 信息科学与工程学院/自动化.txt
完成存储任务: 信息科学与工程学院 - 自动化
完成写入文件: 计算机科学与技术学院(软件学院)/人工智能.txt
完成存储任务: 计算机科学与技术学院(软件学院) - 人工智能
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=5
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=7
完成写入文件: 新能源学院/电气工程及其自动化.txt
完成存储任务: 新能源学院 - 电气工程及其自动化
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=7
完成写入文件: 计算机科学与技术学院(软件学院)/计算机科学与技术.txt
完成存储任务: 计算机科学与技术学院(软件学院) - 计算机科学与技术
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=6
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=4
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=1
开始写入文件: college_intro
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=8
开始写入文件: college_intro
开始写入文件: college_intro
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=7
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=1
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=7
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=5
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=3
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=3
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=6
开始写入文件: college_intro
开始写入文件: college_intro
开始写入文件: college_intro
开始写入文件: college_intro
开始写入文件: college_intro
开始写入文件: college_intro
开始写入文件: college_intro
完成写入文件: 信息科学与工程学院/college_intro.txt
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=72
完成写入文件: 理学院/college_intro.txt
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=36
完成写入文件: 新能源学院/college_intro.txt
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=21
完成写入文件: 材料科学与工程学院/college_intro.txt
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=32
完成写入文件: 材料科学与工程学院/college_intro.txt
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=31
完成写入文件: 海洋工程学院/college_intro.txt
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=2
完成写入文件: 汽车工程学院/college_intro.txt
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=10
完成写入文件: 海洋工程学院/college_intro.txt
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=1
完成写入文件: 汽车工程学院/college_intro.txt
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=9
完成写入文件: 计算机科学与技术学院(软件学院)/college_intro.txt
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=26
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=72
开始写入文件: 测控技术与仪器
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=10
开始写入文件: 智能车辆工程
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=31
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=36
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=26
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=9
开始写入文件: 光电信息科学与工程
开始写入文件: 软件工程
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=1
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=21
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=2
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=32
开始写入文件: 材料成型及控制工程
开始写入文件: 车辆工程
开始写入文件: 机械设计制造及其自动化
开始写入文件: 储能科学与工程
开始写入文件: 机器人工程
开始写入文件: 焊接技术与工程
完成写入文件: 海洋工程学院/机器人工程.txt
完成存储任务: 海洋工程学院 - 机器人工程
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=6
完成写入文件: 理学院/光电信息科学与工程.txt
完成存储任务: 理学院 - 光电信息科学与工程
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=1
完成写入文件: 海洋工程学院/机械设计制造及其自动化.txt
完成存储任务: 海洋工程学院 - 机械设计制造及其自动化
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=1
完成写入文件: 汽车工程学院/智能车辆工程.txt
完成存储任务: 汽车工程学院 - 智能车辆工程
完成写入文件: 汽车工程学院/车辆工程.txt
完成存储任务: 汽车工程学院 - 车辆工程
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=5
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=4
完成写入文件: 新能源学院/储能科学与工程.txt
完成存储任务: 新能源学院 - 储能科学与工程
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=4
完成写入文件: 信息科学与工程学院/测控技术与仪器.txt
完成存储任务: 信息科学与工程学院 - 测控技术与仪器
完成写入文件: 计算机科学与技术学院(软件学院)/软件工程.txt
完成存储任务: 计算机科学与技术学院(软件学院) - 软件工程
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=3
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=3
完成写入文件: 材料科学与工程学院/材料成型及控制工程.txt
完成存储任务: 材料科学与工程学院 - 材料成型及控制工程
完成写入文件: 材料科学与工程学院/焊接技术与工程.txt
完成存储任务: 材料科学与工程学院 - 焊接技术与工程
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=2
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=2
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=6
开始写入文件: college_intro
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=1
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=5
开始写入文件: college_intro
开始写入文件: college_intro
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=4
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=4
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=1
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=3
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=3
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=2
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=2
开始写入文件: college_intro
开始写入文件: college_intro
开始写入文件: college_intro
开始写入文件: college_intro
开始写入文件: college_intro
开始写入文件: college_intro
开始写入文件: college_intro
完成写入文件: 新能源学院/college_intro.txt
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=21
完成写入文件: 海洋科学与技术学院/college_intro.txt
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=46
完成写入文件: 海洋科学与技术学院/college_intro.txt
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=5
完成写入文件: 信息科学与工程学院/college_intro.txt
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=72
完成写入文件: 信息科学与工程学院/college_intro.txt
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=16
完成写入文件: 计算机科学与技术学院(软件学院)/college_intro.txt
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=27
完成写入文件: 海洋工程学院/college_intro.txt
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=3
完成写入文件: 汽车工程学院/college_intro.txt
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=12
完成写入文件: 海洋工程学院/college_intro.txt
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=44
完成写入文件: 汽车工程学院/college_intro.txt
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=9
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=3
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=21
开始写入文件: 储能科学与工程
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=16
开始写入文件: 海洋信息工程
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=9
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=12
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=5
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=46
开始写入文件: 船舶与海洋工程
开始写入文件: 车辆工程
开始写入文件: 交通工程
开始写入文件: 生物工程
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=72
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=27
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=44
开始写入文件: 测控技术与仪器
开始写入文件: 服务科学与工程
开始写入文件: 土木工程
开始写入文件: 环境工程
完成写入文件: 汽车工程学院/交通工程.txt
完成存储任务: 汽车工程学院 - 交通工程
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=2
完成写入文件: 计算机科学与技术学院(软件学院)/服务科学与工程.txt
完成存储任务: 计算机科学与技术学院(软件学院) - 服务科学与工程
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=2
完成写入文件: 汽车工程学院/车辆工程.txt
完成存储任务: 汽车工程学院 - 车辆工程
完成写入文件: 信息科学与工程学院/海洋信息工程.txt
完成存储任务: 信息科学与工程学院 - 海洋信息工程
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=7
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=7
完成写入文件: 新能源学院/储能科学与工程.txt
完成存储任务: 新能源学院 - 储能科学与工程
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=7
完成写入文件: 海洋科学与技术学院/生物工程.txt
完成存储任务: 海洋科学与技术学院 - 生物工程
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=7
完成写入文件: 海洋工程学院/土木工程.txt
完成存储任务: 海洋工程学院 - 土木工程
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=8
完成写入文件: 信息科学与工程学院/测控技术与仪器.txt
完成存储任务: 信息科学与工程学院 - 测控技术与仪器
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=8
完成写入文件: 海洋科学与技术学院/环境工程.txt
完成存储任务: 海洋科学与技术学院 - 环境工程
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=9
完成写入文件: 海洋工程学院/船舶与海洋工程.txt
完成存储任务: 海洋工程学院 - 船舶与海洋工程
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=9
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=7
开始写入文件: college_intro
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=2
开始写入文件: college_intro
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=7
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=7
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=2
开始写入文件: college_intro
开始写入文件: college_intro
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=7
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=8
开始写入文件: college_intro
开始写入文件: college_intro
开始写入文件: college_intro
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=8
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=9
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=9
开始写入文件: college_intro
开始写入文件: college_intro
开始写入文件: college_intro
完成写入文件: 材料科学与工程学院/college_intro.txt
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=28
完成写入文件: 海洋科学与技术学院/college_intro.txt
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=7
完成写入文件: 海洋科学与技术学院/college_intro.txt
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=8
完成写入文件: 材料科学与工程学院/college_intro.txt
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=31
完成写入文件: 材料科学与工程学院/college_intro.txt
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=32
完成写入文件: 材料科学与工程学院/college_intro.txt
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=29
完成写入文件: 理学院/college_intro.txt
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=34
完成写入文件: 理学院/college_intro.txt
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=35
完成写入文件: 经济管理学院/college_intro.txt
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=37
完成写入文件: 经济管理学院/college_intro.txt
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=38
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=32
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=7
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=28
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=35
开始写入文件: 海洋技术
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=37
开始写入文件: 焊接技术与工程
开始写入文件: 工商管理
开始写入文件: 信息与计算科学
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=8
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=34
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=31
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=38
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=29
开始写入文件: 材料科学与工程
开始写入文件: 化学工程与工艺
开始写入文件: 数学与应用数学
开始写入文件: 材料成型及控制工程
开始写入文件: 会计学
开始写入文件: 智能材料与结构
完成写入文件: 理学院/信息与计算科学.txt
完成存储任务: 理学院 - 信息与计算科学
完成写入文件: 海洋科学与技术学院/海洋技术.txt
完成存储任务: 海洋科学与技术学院 - 海洋技术
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=9
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=9
完成写入文件: 理学院/数学与应用数学.txt
完成存储任务: 理学院 - 数学与应用数学
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=10
完成写入文件: 材料科学与工程学院/智能材料与结构.txt
完成存储任务: 材料科学与工程学院 - 智能材料与结构
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=10
完成写入文件: 海洋科学与技术学院/化学工程与工艺.txt
完成存储任务: 海洋科学与技术学院 - 化学工程与工艺
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=1
完成写入文件: 材料科学与工程学院/材料科学与工程.txt
完成存储任务: 材料科学与工程学院 - 材料科学与工程
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=7
完成写入文件: 经济管理学院/会计学.txt
完成存储任务: 经济管理学院 - 会计学
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=1
完成写入文件: 材料科学与工程学院/焊接技术与工程.txt
完成存储任务: 材料科学与工程学院 - 焊接技术与工程
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=2
完成写入文件: 材料科学与工程学院/材料成型及控制工程.txt
完成存储任务: 材料科学与工程学院 - 材料成型及控制工程
完成写入文件: 经济管理学院/工商管理.txt
完成存储任务: 经济管理学院 - 工商管理
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=9
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=10
开始写入文件: college_intro
开始写入文件: college_intro
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=7
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=2
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=10
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=1
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=9
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/college?id=1
开始写入文件: college_intro
开始写入文件: college_intro
开始写入文件: college_intro
开始写入文件: college_intro
开始写入文件: college_intro
开始写入文件: college_intro
完成写入文件: 语言文学学院/college_intro.txt
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=41
完成写入文件: 语言文学学院/college_intro.txt
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=42
完成写入文件: 海洋科学与技术学院/college_intro.txt
完成存储任务: 海洋科学与技术学院 - None
完成写入文件: 材料科学与工程学院/college_intro.txt
完成存储任务: 材料科学与工程学院 - None
完成写入文件: 经济管理学院/college_intro.txt
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=40
完成写入文件: 经济管理学院/college_intro.txt
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=39
完成写入文件: 海洋工程学院/college_intro.txt
完成存储任务: 海洋工程学院 - None
完成写入文件: 海洋工程学院/college_intro.txt
开始获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=45
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=42
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=41
开始写入文件: 朝鲜语
开始写入文件: 英语
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=40
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=39
完成获取网页内容: http://zsb.hitwh.edu.cn/home/major/details?id=45
开始写入文件: 国际经济与贸易
开始写入文件: 信息管理与信息系统
开始写入文件: 船舶与海洋工程(中外合作)
完成写入文件: 经济管理学院/国际经济与贸易.txt
完成存储任务: 经济管理学院 - 国际经济与贸易
完成写入文件: 语言文学学院/朝鲜语.txt
完成存储任务: 语言文学学院 - 朝鲜语
完成写入文件: 海洋工程学院/船舶与海洋工程(中外合作).txt
完成存储任务: 海洋工程学院 - 船舶与海洋工程(中外合作)
完成写入文件: 语言文学学院/英语.txt
完成存储任务: 语言文学学院 - 英语
完成写入文件: 经济管理学院/信息管理与信息系统.txt
完成存储任务: 经济管理学院 - 信息管理与信息系统

在这里插入图片描述

其他

  • 关于爬虫刷到一篇很不错的blog,现在对爬虫很多概念还是不清晰,之后仔细看看

  • 对了前面代码的效果贴个图
    在这里插入图片描述
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1094120.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FastBert学习笔记

论文标题《FastBERT: a Self-distilling BERT with Adaptive Inference Time》。 关于这个论文已经有不错的解读了,所以我写的侧重点可能和别人的不太一样,具体的往下看吧,欢迎讨论。 这个论文从两个方面去掌握: 样本自适应推断…

Oracle11g在红帽Linux上的安装教程

一、版本介绍 本次实验环境所使用虚拟机为VMware17(16或15版本也可以) 镜像版本为Red Hat 7.9: ISO镜像地址: 百度网盘链接 链接:https://pan.baidu.com/s/1p318ZZGMfDp4MllXZXbusg?pwdmpic 提取码&…

C++学习——继承(1)

目录 一,继承是什么? 二,继承的权限 三,继承赋值兼容规则 四,继承中的作用域 一,继承是什么? 我们说面向对象的语言有三大特性:1.封装,2,继承,…

鸿蒙tabbar ArkTS

鸿蒙tabbar ArkTS 做了仿照现在应用的做了一个tabbar。 官方文档地址 参考文档 tabbar 其中有个比较重要的点是,对image资源的引用问题。 资源相关说明 图片是resources目录下的base目录下的。 media目录下的图片的资源不能添加文件夹,只能是文件&a…

【Spring框架】Spring监听器的源码分析

目录 一、Spring监听器模型 二、源码分析 2.1 initApplicationEventMulticaster():事件广播器的初始化 2.1.1 Spring默认的事件广播器SimpleApplicationEventMulticaste 2.2 registerListeners():注册事件监听器 2.3 finishRefresh():完…

京东店铺所有商品数据接口,京东整店所有商品数据接口,京东店铺商品接口,京东API接口

京东店铺所有商品数据接口是开放平台提供的一种API接口,通过调用API接口,开发者可以获取京东整店的商品的标题、价格、库存、月销量、总销量、库存、详情描述、图片、价格信息等详细信息。 京东店铺所有商品数据接口可以用于不同的业务场景,…

【HHO-KELM预测】基于哈里斯鹰算法优化核极限学习机回归预测研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

博图数值按照特定格式(“T000000”)转换成字符串

一、前言 数值按照协议格式,转成字符串。方便和第三方厂家对接。如码垛线使用字符串数据,立库厂家使用dint数据类型,上位机使用DINT数据类型,为了判断数据传输、与动作流程,需要条码的比较,此时可以将数值转…

Kotlin vs Java:为什么Springboot官方教程选择了Kotlin?

导语 作为Java开发者的你,是否在为寻找Java的替代品而烦恼?担心受知识产权问题困扰?别担心,Kotlin来了!它是你的救星,也是Springboot官网教程的选择。想知道为什么吗?那就往下翻吧!…

“通胀噩梦:恶梦继续还是即将终结?经济前景备受关注!“

尽管美联储采取了激进的利率策略,昨天公布的 9 月份 CPI 数据显示,整体同比增长 3.7%,而预期为 3.6%,高于预期。环比预期,为 0.4%,而预期为 0.3%。核心 CPI 环比上涨 0.3%,同比上涨 4.1%&#x…

极限号可以拿到函数的内部吗?【复合函数中极限的进入】

极限号无脑直接拿进来 1.1 如果f(极限值)在该点连续,ojbk,拿进来。 1.2 如果f(极限值)不存在或不连续,不能拿进来,出去。

Flask (Jinja2) 服务端模板注入漏洞复现

文章目录 Flask (Jinja2) 服务端模板注入漏洞1.1 漏洞描述1.2 漏洞原理1.3 漏洞危害1.4 漏洞复现1.4.1 漏洞利用 1.5 漏洞防御 Flask (Jinja2) 服务端模板注入漏洞 1.1 漏洞描述 说明内容漏洞编号漏洞名称Flask (Jinja2) 服务端模板注入漏洞漏洞评级高危影响版本使用Flask框架…

【剑指Offer】27.二叉树的镜像

题目 操作给定的二叉树,将其变换为源二叉树的镜像。 数据范围:二叉树的节点数 0≤n≤1000 , 二叉树每个节点的值 0≤val≤1000 要求: 空间复杂度 O(n) 。本题也有原地操作,即空间复杂度O(1) 的解法,时间…

Servlet--Request请求对象

1.请求对象的概述 请求:获取资源。在BS架构中,就是客户端浏览器向服务器端发出询问 请求对象:就是在项目当中用于发送请求的对象 2.获取各种路径的方法 返回值方法名说明StringgetContextPath()获取虚拟目录名称StringgetServletPath()获…

C++前缀和算法:构造乘积矩阵

题目 给你一个下标从 0 开始、大小为 n * m 的二维整数矩阵 grid ,定义一个下标从 0 开始、大小为 n * m 的的二维矩阵 p。如果满足以下条件,则称 p 为 grid 的 乘积矩阵 : 对于每个元素 p[i][j] ,它的值等于除了 grid[i][j] 外所…

Django使用Token认证(simplejwt库的配置)

目录 官网文档安装项目配置拓展配置 官网文档 https://django-rest-framework-simplejwt.readthedocs.io/en/latest/ 安装 pip install djangorestframework-simplejwt项目配置 REST_FRAMEWORK {...DEFAULT_AUTHENTICATION_CLASSES: (...rest_framework_simplejwt.authent…

【斗破年番】彩鳞换装美翻,雁落天惨死,萧炎暗杀慕兰三老遇险,彩鳞霸气护夫

Hello,小伙伴们,我是小郑继续为大家深度解析斗破苍穹年番资讯。 斗破苍穹动画已经更新了,小医仙与萧炎相认,三国联军撤退,随后彩鳞与萧炎以及小医仙夜晚相会,一起制定了刺杀行动。从官方公布的第68集预告,彩…

ST‐LINK V2 使用说明(安装,调试,烧录)

目录 1. 初识 ST-LINK V2 1.1 ST-LINK V2 简介 2. ST-LINK V2 驱动的安装与固件升级 2.1 驱动的安装 2.2 固件的升级 3. 使用 STM32 ST-LINK Utility 烧写目标板 hex 3.1 ST-LINK 烧写 hex 文件 4.使用 ST-LINK V2 调试 STM8 4.1 ST‐LINK 调试 STM8 5.…

【GA-ACO-RFR预测】基于混合遗传算法-蚁群算法优化随机森林回归预测研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

时序分解 | Matlab实现EEMD集合经验模态分解时间序列信号分解

时序分解 | Matlab实现EEMD集合经验模态分解时间序列信号分解 目录 时序分解 | Matlab实现EEMD集合经验模态分解时间序列信号分解效果一览基本介绍程序设计参考资料 效果一览 基本介绍 Matlab实现EEMD集合经验模态分解时间序列信号分解 1.分解效果图 ,效果如图所示&…