爬厦门大学招生标题和日期,将结果保存到同一个excel中

'''爬厦门大学招生标题和日期'''

import requests
from lxml import etree
import pandas as pd

def download(url):
    '''
    下载页面
    
    Parameters
    ----------
    url : str
        要下载的页面对应的url

    Returns
    -------
    html_text : str
        可阅读的html文本

    '''
    response = requests.get(url)
    response.encoding = response.apparent_encoding
    return response.text

def parse_page(html_text):
    '''
    解析HTML代码,提取学术报告的标题

    Parameters
    ----------
    html_text : str
        中文无乱码的HTML代码

    Returns
    -------
    df : str
        返回数据框包含学术报告的标题和日期

    '''
    selector = etree.HTML(html_text)
    titles = selector.xpath("//div[@class='news-item-title']/a/text()")
    dates = selector.xpath("//div[@class='news-item-date']/text()")
    data = []
    for title, date in zip(titles, dates):
        data.append({"标题": title, "日期": date})
    return data

# 初始URL
base_url = "https://zs.xmu.edu.cn/sss.htm"

# 存储所有数据的列表
all_data = []

# 获取总页数
html_text = download(base_url)
selector = etree.HTML(html_text)
element_list=selector.xpath("//span[@class='p_pages']/span/a/text()")
page_numbers=int(element_list[-3])


# 爬取首页,并存入数据
first_page_data = parse_page(html_text)
all_data.extend(first_page_data)

for page in range(page_numbers, 0, -1):  # 逆序循环
    url = f"https://zs.xmu.edu.cn/sss/{page}.htm"  # 更新URL构造方式
    html_text = download(url)
    page_data = parse_page(html_text)
    print(f"已爬取第 {page} 页")
    all_data.extend(page_data)

# 将数据存储为DataFrame
df = pd.DataFrame(all_data)

# 存储为Excel文件
df.to_excel('爬取厦大研究生的页面.xlsx', index=False)

爬取时注意观察不同页码的url所对应的page值,最终结果如图所示(第一页和最后一页)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值