桐桐打算利用爬虫整理一份本专业可以报考的职位数据,并保存在 Excel 表格中分享给其他同学,需要获取前5页的地区、部门、用人司局和职位名称。
查询职位信息的网址是:
http://zwsearch.huatu.com/search_el/searchzyk.php?act=zyzycx¶m=iPzE5nMlfeMt8rpXP4X4%2B8s5i3jr5q31XqYDuQPPQPDQabhcEZH9C7kp8ueJ%2BEGeHcelVibJR7qhjO6%2FU3YWkeaGhYPcUXq3%2BkkB7%2B2%2BLbvByizaMIDI%2FOIKEmELCTUD7x%2BYXW%2BbbLyMPPrqVRZ5F98&page=1
查询的关键字是:本科、计算机科学与技术
题目要求:
- Excel文档保存路径:/Users/公务员职位信息.xlsx
- 工作表命名:计算机科学与技术
- 写入顺序为:地区、部门、用人司局和职位名称
- 直接提取标签输出内容为空,需要提取标签;
- 取出文字内容写入即可,不需要去除文字中的空格;
- 最后生成的Excel格式预览:
# 导入requests模块
import requests
# 导入bs4中的BeautifulSoup模块
from bs4 import BeautifulSoup
# 导入pandas模块并以pd调用
import pandas as pd
# 将User-Agent以字典键对形式赋值给headers
headers = {"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36"}
# 新建用于存储地区、部门、用人司局、职位名称的列表
areaList = []
departmentList =[]
companyList = []
positionList = []
# 使用for循环和range()生成1-5的变量并遍历
for page in range(1,6):
# 使用格式化组合链接
url = f"http://zwsearch.huatu.com/search_el/searchzyk.php?act=zyzycx¶m=iPzE5nMlfeMt8rpXP4X4%2B8s5i3jr5q31XqYDuQPPQPDQabhcEZH9C7kp8ueJ%2BEGeHcelVibJR7qhjO6%2FU3YWkeaGhYPcUXq3%2BkkB7%2B2%2BLbvByizaMIDI%2FOIKEmELCTUD7x%2BYXW%2BbbLyMPPrqVRZ5F98&page={page}"
# 使用get()函数请求链接,并且带上headers
response = requests.get(url, headers=headers)
# 使用.text属性将服务器相应内容转换为字符串形式,赋值给html
html = response.text
# 用BeautifulSoup()传入变量html和解析器lxml,赋值给soup
soup = BeautifulSoup(html,"lxml")
content_all=soup.find_all("tr")
for content in content_all:
if content.find("td") !=None:
areaList.append(content.contents[1].string) #地区
departmentList.append(content.contents[3].string) #部门
companyList.append(content.contents[5].string) #用人司局
positionList.append(content.contents[7].string) #职位名称
total={"地区":areaList,"部门":departmentList,"用人司局":companyList,"职位名称":positionList}
info=pd.DataFrame(total)
writer=pd.ExcelWriter("/Users/公务员职位信息.xlsx")
info.to_excel(writer,sheet_name="计算机科学与技术")
writer.save()
writer.close()