1.内容:抓取boss直聘网上广州地区的 python 相关工作的招聘信息,并且将招聘信息循环保存在excel表中
2.目标网站:https://www.zhipin.com/c101280100/?query=python&page=
3.使用软件:pycharm
4.使用版本:python3.7
5.涉及的python类库:requests、xlwt、lxml
1.安装、导入相关的类库
import requests #请求网页 import xlwt #excel操作 from lxml import etree #xpath2.确定网页,确定请求头,解决反爬机制。
#获取页面 def getPage(): #请求头处理 header = { "user-agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) " "AppleWebKit/537.36 (KHTML, like Gecko) " "Chrome/63.0.3239.132 Safari/537.36" } #定义一个列表存放所有的html信息 responses = [] #循环抓取7页的html代码 for page in range(1,8): url = "https://www.zhipin.com/c101280100/?query=python&page=" + str(page) response = requests.get(url,headers = header).text responses.append(response) print("第"+str(page)+"页读取保存成功") return str(responses)3.解析网页,处理爬取到的数据。
#解释函数:运用xpath处理html def parse(text): html = etree.HTML(text) # 初始化 标准化 #岗位 jobs = html.xpath('//div[@class="job-title"]/text()') #地点 place = html.xpath('//div[@class="info-primary"]/p/text()[1]') #工作经验 workyear = html.xpath('//div[@class="info-primary"]/p/text()[2]') #学历要求 xueli = html.xpath('//div[@class="info-primary"]/p/text()[3]') #工资 salary = html.xpath('//div[@class="info-primary"]//span[@class="red"]/text()') #招聘企业 company = html.xpath('//div[@class="company-text"]//a/text()') # zip() 打包为元组的列表 加上 list 才能转化为元组的列表 jobs_data = list(zip(jobs,place,workyear,xueli,salary,company)) # 第一行加上列名 jobs_data.insert(0, ("岗位","地点","工作经验", "学历要求","薪资", "招聘企业")) # 调用保存为excel的函数 save_to_excel("python", "python", jobs_data)4.保存数据
#保存为excel文件 def save_to_excel(filename,sheet_name,data): f = xlwt.Workbook(encoding='utf-8') #创建一个Workbook 设置编码 # 第二参数表示是否可以覆盖单元格 其实是 Workbook实例化的一个参数,默认值为False sheet = f.add_sheet(sheet_name,cell_overwrite_ok=True) # enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列, # 同时列出数据和数据下标,一般用在 for 循环当中。 for row,row_data in enumerate(data): #处理行 for column,column_data in enumerate(row_data): #处理列 sheet.write(row,column,str(column_data)) f.save(filename + ".xls")
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~此处省略一百条招聘数据~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~