【class6】一个爬虫的案例

题⽬ 统计五⻚计算机专业可以报考的公务员职位信息,并⽣成Excel⽂档 查询⽹址: https://nocturne-spider.baicizhan.com/practise/60/PAGE/1.html

【题⽬要求】 1. Excel⽂档保存路径:/Users/公务员职位信息.xlsx 2. ⼯作表命名:计算机科学与技术 3. 写⼊顺序为:地区、部⻔、⽤⼈司局和职位名称

爬取公务员网站的信息,并制作Excel,示例代码如下:

import requests
from bs4 import BeautifulSoup
import pandas as pd
import random

# 用于轮换以模仿不同浏览器的User-Agent列表
user_agents = [
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3",
    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Safari/605.1.15",
    # 如有必要,添加更多的User-Agents
]

headers = {"User-Agent": random.choice(user_agents)}

areaList = []
departmentList = []
companyList = []
positionList = []

for page in range(1, 6):
    url = f"https://nocturne-spider.baicizhan.com/practise/60/PAGE/{page}.html"
    try:
        response = requests.get(url, headers=headers)
        response.raise_for_status()  # 如果响应状态码为4XX/5XX,则引发HTTPError
        html = response.text
        soup = BeautifulSoup(html, "lxml")

        table = soup.find(class_="table fsk01")
        content_all = table.find_all("tr")[1:]

        for item in content_all:
            contents = item.find_all("td")
            contentList = contents[:4]

            areaList.append(contentList[0].string)
            departmentList.append(contentList[1].string)
            companyList.append(contentList[2].string)
            positionList.append(contentList[3].string)

    except requests.RequestException as e:
        print(f"请求页面{page}时出错:{e}")
    except AttributeError as e:
        print(f"解析页面{page}时出错:{e}")

total = {
    "地区": areaList,
    "部门": departmentList,
    "用人司局": companyList,
    "职位": positionList
}

info = pd.DataFrame(total)

# 对文件路径使用变量会更灵活
file_path = "C:\\Users\\DELL\\公务员职位信息.xlsx"
writer = pd.ExcelWriter(file_path)
info.to_excel(excel_writer=writer, sheet_name="计算机科学与技术")
writer._save()

运行结果:

步骤:

1. 要提取⽹⻚内容,⾸先需要观察每⻚的URL链接变化规律。⻚数增加1,URL中"page="后 ⾯的数字也会增加1。根据变化规律,使⽤for循环请求前五⻚⽹⻚的数据

2.切⽚获取节点

3. 观察界⾯,找到公务员信息对应的class="table fsk01"的节点

4. 观察⽹⻚得知,第⼀个tr节点储存的是表格的标题信息。这部分内容不需要获取。 查询所有"tr"标签的节点,并使⽤切⽚获取返回的结果列表第⼆项及以后的元素。

5. 遍历循环tr节点列表中的元素,查询所有"td"标签的节点并返回结果列表。

6. 题⽬只需要每个tr节点中的前四个td标签的内容,所以对结果列表进⾏切⽚处理,取前四 位。

7. 获取前四项元素的标签内容,并分别添加进对应的列表

8. 全部数据获取完之后,将四个列表添加进字典。然后将字典存储为指定路径与名称的Excel

大家可以自学列表切片的知识,并实践一下。

欢迎大家讨论,明天继续更新具体知识~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值