Python3
pycharm
import timeimport jsonimport urllib.requestimport urllib.parsefrom bs4 import BeautifulSoup
def main(): '''主函数''' # 提示用户输入城市名称 city = input('请输入要爬取的城市名称:') # 提示用户输入岗位关键字 kw = input('请输入要爬取的岗位名称:') # 提示用户输入爬取的页码 start_page = int(input('请输入起始页码:')) end_page = int(input('请输入结束页码:')) zhilian = ZhiLianZhaoPin(city, kw, start_page, end_page) zhilian.run()if __name__ == '__main__': main()
class ZhiLianZhaoPin(object): '''class''' def __init__(self, city, kw, start_page, end_page): # 保存到成员属性 self.city = city self.kw = kw self.start_page = start_page self.end_page = end_page self.url = 'https://sou.zhaopin.com/jobs/searchresult.ashx?' # 声明一个空列表,保存字典信息 self.items = [] def parse_content(self, page, content): '''一级解析函数''' # 创建soup对象 soup = BeautifulSoup(content, 'lxml') table_list = soup.find_all('table', class_='newlist')[1:] # print (table_list[0]) for table_content in table_list: # 获取信息 href_list = table_content.select(' tr > td > div > a') # print(href_list) href = href_list[0]['href'] print(href) # # 反馈率 # fklv = str(table_content.select('.new_list > tr > .fk_lv')[0].text) + '反馈率' # print(fklv) # 第二级查找 self.parse_content2(page, href) def parse_content2(self, page, href): '''二级解析函数''' # 创建请求对象 request = self.handle_request(page, href) # 获取内容 content = urllib.request.urlopen(request).read().decode('utf8') # 解析 # pattern = re.compile(r'') soup = BeautifulSoup(content, 'lxml') # 职位名称 job_name = soup.h1.text # print(job_name) # 公司名称 company_name = soup.h2.text # print(company_name) # 福利待遇 fldy = soup.find('div', class_='welfare-tab-box').text # print(fldy) # 招聘信息 information = soup.select('.terminalpage-left > ul')[0].text.replace('\n',' ') # print(information) # 任职要求 工作地址 job_requirements = soup.select('.tab-inner-cont')[0].text.replace('\n', ' ') # print(job_requirements) # 保存为字典格式 item = { '职位名称': job_name, '公司名称': company_name, '福利待遇': fldy, '招聘信息': [information], '任职要求与工作地点': job_requirements } # 添加进列表 self.items.append(item) time.sleep(1) def run(self): '''运行函数''' for page in range(self.start_page, self.end_page + 1): request = self.handle_request(page) content = urllib.request.urlopen(request).read().decode('utf8') print('开始保存第%s页。。。' % page) # 解析函数 self.parse_content(page, content) string = json.dumps(self.items, ensure_ascii=False) json_path = self.kw + '.json' with open(json_path, 'w', encoding='utf8') as fp: fp.write(string) print('第%s页保存完毕' % page) def handle_request(self, page=0, href=None): '''请求函数''' data = { 'jl': self.city, 'kw': self.kw, 'p': page, } # 处理data,拼接url data = urllib.parse.urlencode(data) url = self.url + data print(url) headers = { 'User-Agent': 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50', } if href: return urllib.request.Request(url=href, headers=headers) else: return urllib.request.Request(url, headers=headers)
[ { '招聘信息': [ ' 职位月薪:15元/月 工作地点:北京 发布日期:2018-07-24 14:39:49 工作性质:全职 工作经验:3-5年 最低学历:本科 招聘人数:1人 职位类别:软件研发工程师 ' ], '公司名称': '慧泽商通(北京) ', '职位名称': 'python开发工程师', '福利待遇': ' 绩效奖金全勤奖五险一金交通补助餐补通讯补贴带薪年假定期体检 ', '任职要求与工作地点': ' 岗位职责1、参与SaaS平台搭建及企业云应用研发工作(外贸行业货代及贸易商云管理系统)2、负责外部系统对接(如订舱平台、金融平台、钉钉),连接外贸供应链3、与产品人员协作,理解产品需求,提供可行技术方案,快速完成JIRA上的日常开发任务4、参与SaaS Docker部署、维护,基于运维监控数据、客户反馈进行代码优化5、负责相关技术文档的编写、技术培训/分享任职要求1、计算机相关专业,统招本科及以上学历,2年以上Python开发经验;2、精通Python开发,熟悉HTML5/CSS和XML3、具备丰富的逻辑编程经验,精通Python编程,掌握Python的高效写法4、熟悉Linux/Unix开发环境,熟悉Git,熟悉敏捷开发流程5、具有Odoo、SaaS云平台、ERP项目、外贸业务系统开发经验者优先; 工作地址: 北京市东城区朝阳门北大街8号富华大厦F座7层 查看职位地图 ' }, { '招聘信息': [ ' 职位月薪:面议 工作地点:北京 发布日期:2018-07-24 13:11:01 工作性质:全职 工作经验:不限 最低学历:本科 招聘人数:1人 职位类别:软件研发工程师 ' ], '公司名称': '智联招聘网/Zhaopin.com ', '职位名称': 'Python开发工程师(安全方向)', '福利待遇': ' 14薪节日福利弹性工作员工旅游定期体检 ', '任职要求与工作地点': ' 岗位职责: 1、负责风控系统的设计与开发, 包括规则引擎、业务api接口以及风险管理后台 2、配合安全数据分析团队推进机器学习的在风控系统的实际落地应用 任职要求: 1、具备1年以上python后端研发经验 2、熟练使用正则表达式、熟悉多线程与多进程 3、熟悉Http协议,了解TCP/IP协议 4、有业务风控系统开发经验优先 5、具备爬虫、安全、数据分析经验优先 工作地址: 首开广场 查看职位地图 ' }, { '招聘信息': [ ' 职位月薪:2元/月 工作地点:北京 发布日期:2018-07-24 14:08:07 工作性质:全职 工作经验:不限 最低学历:本科 招聘人数:1人 职位类别:高级软件工程师 ' ], '公司名称': '拓天伟业(北京)资产 ', '职位名称': 'Python高级开发工程师', '福利待遇': ' 节日福利五险一金绩效奖金年终分红加班补助房补带薪年假员工旅游 ', '任职要求与工作地点': ' 岗位职责:1、Web后端业务逻辑层、数据层的实现。2、负责应用的高级设计师、功能实现并进行测试及部署。任职要求:1、统招全日制本科及以上学历,计算机及相关专业,扎实的计算机基础知识。2、3年以上Web开发经验,精通Python程序设计、熟悉Flask、django或Tornado等框架。3、熟悉Linux操作环境,熟练使用Mysql、Nginx、MongoDB、Redis。4、良好的系统分析设计能力,文档管理能力及变成习惯。5、沟通能力强,具有良好的团队合作意识。 工作地址: 总公司:北京市丰台区洋桥12号天路蓝图大厦 ' }, { '招聘信息': [ ' 职位月薪:15元/月 工作地点:北京 发布日期:2018-07-24 13:29:51 工作性质:全职 工作经验:3-5年 最低学历:本科 招聘人数:2人 职位类别:高级软件工程师 ' ], '公司名称': '柔持(北京) ', '职位名称': 'Python后端开发工程师', '福利待遇': ' 不加班弹性工作餐补通讯补贴 ', '任职要求与工作地点': ' 工作职责:1、参与面向前台用户和面向后台管理的综合业务系统的需求分析、技术选型和工作量评估;2、配合前端开发人员完成后端服务的开发和前端Web应用的对接;3、服从项目的目标和任务安排,配合团队完成开发任务指标;4、后端服务代码的日常维护;5、不断优化代码,应用前沿技术,不断提高后端服务性能;任职要求:1、大学本科以上学历,计算机等相关专业;2、3年以上Python服务端开发经验,熟悉Linux环境下的开发;3、熟悉MVC架构,精通Flask、Tornado、Django等至少一个开发框架;4、参与或主导过CRM、ERP等后台管理系统开发者优先;5、具备良好的编码习惯及开发文档书写习惯;6、具有优秀的团队合作和沟通协作能力,善于学习,乐于分享,能承受较大工作压力。 工作地址: 柔持(北京) 查看职位地图 ' },。。。}]
注意:自己安装所需要的包