题⽬ 统计五⻚计算机专业可以报考的公务员职位信息,并⽣成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
大家可以自学列表切片的知识,并实践一下。
欢迎大家讨论,明天继续更新具体知识~~