今天分享一下用python爬取51job智联招聘网站的学习研究成果,招聘网站扒一扒,你才知道干点啥,看看不同行业薪资水平究竟咋样。
51job网站数据抓取有一定难度,相比上一期分享的豆瓣电影网站上了一些反爬技术手段,岗位的链接地址不在html标签里,藏在了js的变量中,不能直接通过解析网页来获得。
今天主要分享用python爬取智联招聘网站的六个城市(北京、上海、广州、深圳、武汉、成都)、六个岗位(人工智能、大数据、图像处理、java、python、机械工程师)的薪资待遇等数据信息,并用SQLite数据库保存数据,用Flask框架、Echarts模块进行数据分析与展示。
一、构造URL地址
1.构造搜索页地址:
打开网站首页,https://www.51job.com/,在搜索框输入python,城市选择北京,转到以下搜索结果网页:
https://search.51job.com/list/010000,000000,0000,00,9,99,python,2,1.html?lang=c&postchannel=0000&workyear=99&cotype=99°reefrom=99&jobterm=99&companysize=99&ord_field=0&dibiaoid=0&line=&welfare=
把上述地址?及以后的内容删掉,你会发现搜索结果页面没啥变化。Ok,我们就以此为基准分析网页地址的构造方法。
当我们搜索python时,链接地址里就有python字段,说明这是一个岗位字段,当我们输入人工智能时,岗位字段变成了一个奇怪的东西:
https://search.51job.com/list/010000,000000,0000,00,9,99,%25E4%25BA%25BA%25E5%25B7%25A5%25E6%2599%25BA%25E8%2583%25BD,2,1.html
这个字段是个什么鬼?这是对中文进行编码之后的结果,我们可以通过urllib库的parse.quote()命令进行编码转换,构造出相同的岗位字段。
一个搜索页面只有50个岗位,点击下一页,发现链接地址里的2,1变成了2,2,ok,页面地址的变化规律也找到了,这样我们想抓多少岗位就抓多少了。
再就是城市的不同导致的链接地址的变化,可以选择不同的城市搜索,你会发现城市的不同对应着0100这四位的变化,找几个城市,找出对应的四位代码,构造搜索页地址时,将不同的城市代码替换即可。