Python爬虫:100万以大学专业为关键词的职位信息爬取

一、系统环境:

Windows 7+Python3.4+MongoDB

二、爬取过程:

(1)获取大学本科所有专业名称
# 获取大学本科专业名称
def get_name():
 url = 'http://yx.liexue.cn/zy/'
 wbdata = requests.get(url,headers=header).content
 soup = BeautifulSoup(wbdata,'html.parser')
 name = soup.select("dd.but > a")
 name_list = []
 for n in name:
 # print(n.text)
 name_list.append(n.text)
 # print(soup)
 print(name_list)
 # print(len(name_list))
 return name_list
(2)以专业名称作为搜索关键词获取职位信息的数量url = 'http://sou.zhaopin.com/jobs/searchresult.ashx?jl={0}&kw={1}&sm=0'.format("全国",keywords)
wbdata = requests.get(url,headers=header).content
soup = BeautifulSoup(wbdata,'lxml')
job_count = re.findall(r"共<em>(.*?)</em>个职位满足条件",str(soup))[0] 
pages = (int(job_count)//60)+1
(3)获取职位信息
jobs_url = 'http://sou.zhaopin.com/jobs/searchresult.ashx?jl={0}&kw={1}&sm=0&p={2}'.format("全国",keywords,page)
job_name = soup.select("table.newlist > tr > td.zwmc > div > a")
# company_name = soup.select("table.newlist > tr > td.gsmc > a")
salarys = soup.select("table.newlist > tr > td.zwyx")
locations = soup.select("table.newlist > tr > td.gzdd")
times = soup.select("table.newlist > tr > td.gxsj > span")
for name,salary,location,time in zip(job_name,salarys,locations,times):
 data = {
 'name':name.get_text(),
 'salary':salary.get_text(),
 'location':location.get_text(),
 'time':time.get_text(),
 'cate_name':keywords
 }
 print(keywords,data,page)
 jobs_info.insert_one(data)
 print("插入1条数据完成")
(4)使用多进程执行程序
 pool = Pool(processes=4)
 pool.map_async(get_name_job_info,get_name())
 pool.close()
 pool.join()

最后,抓取了100多万条智联招聘上的职位信息,使用了多进程和多线程,耗时很快;

需要完整代码的,可以关注微信公众号:州的先生,留言获取

原文发布于微信公众号 - 州的先生(zmister2016)

原文发表时间:2016-12-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏区块链

200行代码构建一个区块链

我将介绍一个我用200行 Javascript 代码完成的超级简单的区块链:NaiveChain 。

87319
来自专栏哲学驱动设计

090609 T 领域建模

领域建模的重要性     以数据为中心的应用程序开发,面向过程分析方法的核心在于对数据库的设计。     而现在以面向对象的方式进行分析(OOA,OOD)时,领...

1718
来自专栏PHP技术

PHP程序员突破成长瓶颈 - 附学习建议

身边有几个做PHP开发的朋友,因为面试,也接触到不少的PHP工程师,他们常疑虑自己将来在技术上的成长与发展,我常给他们一些建议,希望他们能破突自己,有更好的发展...

3433
来自专栏GreenLeaves

Builder生成器(创建型模式)

一、使用场景: 1、假设要创建一个House设施,该设施的创建由若干个部分组成,而且这若干个部分经常变化。 如果用最直观的设计方式,每一个房屋部分的变化,都将导...

1826
来自专栏云计算D1net

干货:如何计算用户行为大数据

用户行为类数据是最常见的大数据形式,比如电信的通话记录、网站的访问日志、应用商店的app下载记录、银行的账户信息、机顶盒的观看记录、股票的交易记录、保险业的...

3185
来自专栏butterfly100

领域驱动设计的基础知识总结

1. 什么是领域(Domain) 我们所做的软件系统的目的都是来解决一系列问题,例如做一个电商系统来在线销售自己企业的产品;做一个灰度发布平台来提升服务的质量和...

30711
来自专栏企鹅号快讯

用不到 50 行的 Python 代码构建最小的区块链

译文:CSDN - 黑色巧克力 geek.csdn.net/news/detail/228355 ? 尽管一些人认为区块链是一个等待问题的解决方案,但毫无疑...

1720
来自专栏区块链入门

【区块链安全】技术小白如何做到让一行代码值64亿元?

2018年4月24日,又一件突发性事件引爆了币圈!刚刚发行了才两个月的“美链 Beauty Chain” (简称BEC)在受到黑客的攻击的影响下直接归零了!黑客...

954
来自专栏技术点滴

使用DataFlow表达ControlFlow的一些思考

分支和循环是最常见的控制流形式。由于控制条件的存在,总有一部分代码片段会执行,另一部分不会执行。

893
来自专栏机器学习算法与Python学习

Python:10篇不可错过的~热文~》》真的很热》》

以下是精选了“ Python开发者” 5月份的10篇 Python 热文。其中有基础知识,项目实战等。 《Python 爬虫建站入门手记(1):环境搭建》 本文...

3103

扫码关注云+社区