电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

python使用bs4爬取boss直聘靜態(tài)頁(yè)面

瀏覽:5日期:2022-07-08 16:47:30

思路:

1、將需要查詢(xún)城市列表,通過(guò)城市接口轉(zhuǎn)換成相應(yīng)的code碼

2、遍歷城市、職位生成url

3、通過(guò)url獲取列表頁(yè)面信息,遍歷列表頁(yè)面信息

4、再根據(jù)列表頁(yè)面信息的job_link獲取詳情頁(yè)面信息,將需要的信息以字典data的形式存在列表datas里

5、判斷列表頁(yè)面是否有下一頁(yè),重復(fù)步驟3、4;同時(shí)將列表datas一直傳遞下去

6、一個(gè)城市、職位url爬取完后,將列表datas接在列表datas_list后面,重復(fù)3、4、5

7、最后將列表datas_list的數(shù)據(jù),遍歷寫(xiě)在Excel里面

知識(shí)點(diǎn):

1、將response內(nèi)容以json形式輸出,解析json并取值

2、soup 的select()和find_all()和find()方法使用

3、異常Exception的使用

4、wldt創(chuàng)建編輯Excel的使用

import requests, time, xlwtfrom bs4 import BeautifulSoupclass MyJob(): def __init__(self, mycity, myquery): self.city = mycity self.query = myquery self.list_url = 'https://www.zhipin.com/job_detail/?query=%s&city=%s&industry=&position='%(self.query, self.city) self.datas = [] self.header = { ’authority’: ’www.zhipin.com’, ’method’: ’GET’, ’scheme’: ’https’, ’accept’: ’text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8’, ’accept-encoding’: ’gzip, deflate, br’, ’accept-language’: ’zh-CN,zh;q=0.9’, ’cache-control’: ’max-age=0’, ’cookie’: ’lastCity=101210100;uab_collina=154408714637849548916323;toUrl=/;c=1558272251;g=-;l=l=%2Fwww.zhipin.com%2Fuser%2Flogin.html&r=; Hm_lvt_194df3105ad7148dcf2b98a91b5e727a=1555852331,1556985726,1558169427,1558272251; __a=40505844.1544087205.1558169426.1558272251.41.14.4.31; Hm_lpvt_194df3105ad7148dcf2b98a91b5e727a=1558272385’, ’referer’: ’https://www.zhipin.com/?ka=header-logo’, ’upgrade-insecure-requests’: ’1’, ’user-agent’: ’Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36’ } #將城市轉(zhuǎn)化為code碼 def get_city(self,city_list): city_url = 'https://www.zhipin.com/wapi/zpCommon/data/city.json' #獲取城市 json = requests.get(city_url).json() zpData = json['zpData']['cityList'] list = [] for city in city_list : for data_sf in zpData:for data_dq in data_sf['subLevelModelList']: if city == data_dq['name']: list.append(data_dq['code']) return list #獲取所有頁(yè)內(nèi)容 def get_job_list(self, url, datas): print(url) html = requests.get(url, headers=self.header).text soup = BeautifulSoup(html, ’html.parser’) jobs = soup.select('.job-primary') for job in jobs: data = {} # 招聘id data['job_id'] = job.find_all('div', attrs={'class': 'info-primary'})[0].find('a').get('data-jobid') # 招聘鏈接 data['job_link'] = 'https://www.zhipin.com' + job.find_all('div', attrs={'class': 'info-primary'})[0].find('a').get('href') # 招聘崗位 data['job_name'] = job.find_all('div', attrs={'class': 'info-primary'})[0].find('div', attrs={'class': 'job-title'}).get_text() # 薪資 data['job_red'] = job.find_all('div', attrs={'class': 'info-primary'})[0].find('span', attrs={'class': 'red'}).get_text() # 地址 #工作年限 #學(xué)歷 data['job_address'] = job.find_all('div', attrs={'class': 'info-primary'})[0].find('p').get_text().split(' ') # 企業(yè)鏈接 data['job_company_link'] = job.find_all('div', attrs={'class': 'info-company'})[0].find('a').get('href') # 企業(yè)信息 data['job_company'] = job.find_all('div', attrs={'class': 'info-company'})[0].find('p').get_text().split(' ') # boss鏈接 data['job_publis_link'] = job.find_all('div', attrs={'class': 'info-publis'})[0].find('img').get('src') # boos信息 data['job_publis'] = job.find_all('div', attrs={'class': 'info-publis'})[0].find('h3').get_text().split(' ') time.sleep(5) self.get_job_detail(data) # 獲取job詳情頁(yè)內(nèi)容 print(data) datas.append(data) # 將某條job添加到datas中,直到將當(dāng)前頁(yè)添加完 try: next_url = soup.find('div', attrs={'class': 'page'}).find('a', attrs={'class': 'next'}).get('href') #if next_url[-1] =='3': # 第二頁(yè)自動(dòng)拋異常 if next_url in 'javascript:;': # 最后一頁(yè)自動(dòng)拋異常raise Exception() except Exception as e: print('最后一頁(yè)了;%s' % e) return datas # 返回所有頁(yè)內(nèi)容 else: time.sleep(5) next_url = 'https://www.zhipin.com' + next_url self.get_job_list(next_url, datas) return datas # 返回所有頁(yè)內(nèi)容 #獲取詳情頁(yè)內(nèi)容 def get_job_detail(self, data): print(data['job_link']) html = requests.get(data['job_link'], headers=self.header).text soup = BeautifulSoup(html, ’html.parser’) # 招聘公司 data['detail_content_name'] = soup.find_all('div', attrs={'class': 'detail-content'})[0].find('div', attrs={'class': 'name'}).get_text() # 福利 data['detail_primary_tags'] = soup.find_all('div', attrs={'class': 'info-primary'})[0].find('div', attrs={'class': 'job-tags'}).get_text().strip() # 招聘崗位 data['detail_primary_name'] = soup.find_all('div', attrs={'class': 'info-primary'})[0].find('h1').get_text() # 招聘狀態(tài) data['detail_primary_status'] = soup.find_all('div', attrs={'class': 'info-primary'})[0].find('div', attrs={'class': 'job-status'}).get_text() # 薪資 data['detail_primary_salary'] = soup.find_all('div', attrs={'class': 'info-primary'})[0].find('span', attrs={'class': 'salary'}).get_text() # 地址 #工作年限 #學(xué)歷 data['detail_primary_address'] = soup.find_all('div', attrs={'class': 'info-primary'})[0].find('p').get_text() # 工作地址 data['detail_content_address'] = soup.find_all('div', attrs={'class': 'detail-content'})[0].find('div', attrs={'class': 'location-address'}).get_text() # 職位描述 data['detail_content_text'] = soup.find_all('div', attrs={'class': 'detail-content'})[0].find('div', attrs={'class': 'text'}).get_text().strip().replace(';', 'n') # boss名字 data['detail_op_name'] = soup.find_all('div', attrs={'class': 'detail-op'})[1].find('h2', attrs={'class': 'name'}).get_text() # boss職位 data['detail_op_job'] = soup.find_all('div', attrs={'class': 'detail-op'})[1].find('p', attrs={'class': 'gray'}).get_text().split('·')[0] # boss狀態(tài) data['detail_op_status'] = soup.find_all('div', attrs={'class': 'detail-op'})[1].find('p', attrs={'class': 'gray'}).get_text().split('·')[1] #將獲取的數(shù)據(jù)寫(xiě)入Excel def setExcel(self, datas_list): book = xlwt.Workbook(encoding=’utf-8’) table = book.add_sheet('boss軟件測(cè)試') table.write(0, 0, '編號(hào)') table.write(0, 1, '招聘鏈接') table.write(0, 2, '招聘崗位') table.write(0, 3, '薪資') table.write(0, 4, '地址') table.write(0, 5, '企業(yè)鏈接') table.write(0, 6, '企業(yè)信息') table.write(0, 7, 'boss鏈接') table.write(0, 8, 'boss信息') table.write(0, 9, 'detail詳情') i = 1 for data in datas_list: table.write(i, 0, data['job_id']) table.write(i, 1, data['job_link']) table.write(i, 2, data['job_name']) table.write(i, 3, data['job_red']) table.write(i, 4, data['job_address']) table.write(i, 5, data['job_company_link']) table.write(i, 6, data['job_company']) table.write(i, 7, data['job_publis_link']) table.write(i, 8, data['job_publis']) table.write(i, 10, data['detail_content_name']) table.write(i, 11, data['detail_primary_name']) table.write(i, 12, data['detail_primary_status']) table.write(i, 13, data['detail_primary_salary']) table.write(i, 14, data['detail_primary_address']) table.write(i, 15, data['detail_content_text']) table.write(i, 16, data['detail_op_name']) table.write(i, 17, data['detail_op_job']) table.write(i, 18, data['detail_op_status']) table.write(i, 19, data['detail_primary_tags']) table.write(i, 20, data['detail_content_address']) i += 1 book.save(r’C:%s_boss軟件測(cè)試.xls’ % time.strftime(’%Y%m%d%H%M%S’)) print('Excel保存成功')if __name__ == ’__main__’: city_list = MyJob('','').get_city(['杭州']) query_list = ['軟件測(cè)試', '測(cè)試工程師'] datas_list = [] for city in city_list: for query in query_list: myjob = MyJob(city, query) datas = myjob.get_job_list(myjob.list_url, myjob.datas) datas_list.extend(datas) myjob.setExcel(datas_list)

以上就是python使用bs4爬取boss直聘靜態(tài)頁(yè)面的詳細(xì)內(nèi)容,更多關(guān)于python 爬取boss直聘的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: boss直聘 Python
相關(guān)文章:
主站蜘蛛池模板: 袋式过滤器,自清洗过滤器,保安过滤器,篮式过滤器,气体过滤器,全自动过滤器,反冲洗过滤器,管道过滤器,无锡驰业环保科技有限公司 | 【ph计】|在线ph计|工业ph计|ph计厂家|ph计价格|酸度计生产厂家_武汉吉尔德科技有限公司 | uv机-uv灯-uvled光固化机-生产厂家-蓝盾机电 | 恒温恒湿试验箱_高低温试验箱_恒温恒湿箱-东莞市高天试验设备有限公司 | 阿米巴企业经营-阿米巴咨询管理-阿米巴企业培训-广东键锋企业管理咨询有限公司 | 铁盒_铁罐_马口铁盒_马口铁罐_铁盒生产厂家-广州博新制罐 | 高空重型升降平台_高空液压举升平台_高空作业平台_移动式升降机-河南华鹰机械设备有限公司 | 论文查重_免费论文查重_知网学术不端论文查重检测系统入口_论文查重软件 | 合肥网带炉_安徽箱式炉_钟罩炉-合肥品炙装备科技有限公司 | 防水套管|柔性防水套管|伸缩器|伸缩接头|传力接头-河南伟创管道 防水套管_柔性防水套管_刚性防水套管-巩义市润达管道设备制造有限公司 | 北京印刷厂_北京印刷_北京印刷公司_北京印刷厂家_北京东爵盛世印刷有限公司 | VI设计-LOGO设计公司-品牌设计公司-包装设计公司-导视设计-杭州易象设计 | 澳门精准正版免费大全,2025新澳门全年免费,新澳天天开奖免费资料大全最新,新澳2025今晚开奖资料,新澳马今天最快最新图库 | 山东臭氧发生器,臭氧发生器厂家-山东瑞华环保设备 | 蔬菜配送公司|蔬菜配送中心|食材配送|饭堂配送|食堂配送-首宏公司 | 氟塑料磁力泵-不锈钢离心泵-耐腐蚀化工泵厂家「皖金泵阀」 | 合肥花魁情感婚姻咨询中心_挽回爱情_修复婚姻_恋爱指南 | 直读光谱仪,光谱分析仪,手持式光谱仪,碳硫分析仪,创想仪器官网 | vr安全体验馆|交通安全|工地安全|禁毒|消防|安全教育体验馆|安全体验教室-贝森德(深圳)科技 | 高速混合机_锂电混合机_VC高效混合机-无锡鑫海干燥粉体设备有限公司 | 电池高低温试验箱-气态冲击箱-双层电池防爆箱|简户百科 | 网站建设-高端品牌网站设计制作一站式定制_杭州APP/微信小程序开发运营-鼎易科技 | 微水泥_硅藻泥_艺术涂料_艺术漆_艺术漆加盟-青岛泥之韵环保壁材 武汉EPS线条_EPS装饰线条_EPS构件_湖北博欧EPS线条厂家 | 水厂污泥地磅|污泥处理地磅厂家|地磅无人值守称重系统升级改造|地磅自动称重系统维修-河南成辉电子科技有限公司 | 生物除臭剂-除味剂-植物-污水除臭剂厂家-携葵环保有限公司 | 标准光源箱|对色灯箱|色差仪|光泽度仪|涂层测厚仪_HRC大品牌生产厂家 | 截齿|煤截齿|采煤机截齿|掘进机截齿|旋挖截齿-山东卓力截齿厂家报价 | 步进电机_agv电机_伺服马达-伺服轮毂电机-和利时电机 | 轴流风机-鼓风机-离心风机-散热风扇-罩极电机,生产厂家-首肯电子 | 耐驰泵阀管件制造-耐驰泵阀科技(天津)有限公司 | 钢托盘,钢制托盘,立库钢托盘,金属托盘制造商_南京飞天金属制品实业有限公司 | pbootcms网站模板|织梦模板|网站源码|jquery建站特效-html5模板网 | 集装箱箱号识别_自重载重图像识别_铁路车号自动识别_OCR图像识别 | 温州食堂承包 - 温州市尚膳餐饮管理有限公司 | 西门子气候补偿器,锅炉气候补偿器-陕西沃信机电工程有限公司 | 通辽信息港 - 免费发布房产、招聘、求职、二手、商铺等信息 www.tlxxg.net | 活性氧化铝|无烟煤滤料|活性氧化铝厂家|锰砂滤料厂家-河南新泰净水材料有限公司 | 高柔性拖链电缆-聚氨酯卷筒电缆-柔性屏蔽电缆厂家-玖泰电缆 | 交联度测试仪-湿漏电流测试仪-双85恒温恒湿试验箱-常州市科迈实验仪器有限公司 | 苏州同创电子有限公司 - 四探针测试仪源头厂家| 机器视觉检测系统-视觉检测系统-机器视觉系统-ccd检测系统-视觉控制器-视控一体机 -海克易邦 |