“前程无忧”(Nasdaq: JOBS) : 是国内一个集多种媒介资源优势的专业人力资源服务机构,创始人为甄荣辉。它集合了传统媒体、网络媒体及先进的信息技术,加上一支经验丰富的专业顾问队伍,提供包括招聘猎头、培训测评和人事外包在内的全方位专业人力资源服务,现在全国25个城市设有服务机构。2004年9月,前程无忧成为第一个在美国纳斯达克上市的中国人力资源服务企业,是中国最具影响力的人力资源服务供应商之一。经第三方监测机构iResearch 等调查,连续多年市场占有率第一。无忧工作网先后多次被CNNIC、Alexa 和Euromonitor评为“中国最具影响力的人才招聘网站”。
前程无忧官网: https://www.51job.com/
时间: 2019/08/10
爬取内容: 职位名称,公司名称,工资,地点,发布时间。
操作环境: win10, python3.6, jupyter notebook,谷歌浏览器
技术实现思路:
1. 注册登录前程无忧
2. 分析网页
3. 请求网页
4. 提取数据
5. 保存数据
6. 全部源码
思路分步讲解
1. 注册登录前程无忧
打开前程无忧的官网,并不能直接搜索信息,它会提醒你先注册。登录成功后就不需要再次注册了,后来发现这台电脑的其他浏览器都不需要注册也可以直接搜索职位信息了。我在手机的浏览器打开前程无忧网,还是需要注册的。
2. 分析网页
2.1、现在登录成功了,搜索python,地点选择贵州,搜索
2.2、查看网页源代码(Ctrl+U)
查找(Ctrl+F)网页中的数据,最好选择公司名称这类不容易重复的内容,便于精确查找,如:广州欢创劳务派遣有限公司
结果: 在HTML源码中找到了需要的数据,说明我们可以从网页源码中提取信息
2.3、网页分析路径
HTML源码对应的URL就是浏览器导航栏的URL,把它复制下来就可以请求网页了。
本次搜索的关键词有两个页面,就需要对比它们的路径,实现页面跳转。通过对比测试,发现页面由它控制的。
3. 请求网页
3.1、查看网页的请求方式,它的请求方法是get
3.2、设置headers
haeders用来告诉服务器,这是一个浏览器发出的请求,达到反爬虫的目的,其中放Referer,Cookie,User-Agent等
- Referer:反爬虫路径
- Cookie:存放用户登录信息
- User-Agent:浏览器的信息
3.3、网页使用gbk编码方式
3.4、发出请求获取html源码
import requests
url = 'https://search.51job.com/list/000000,000000,0000,00,9,99,python,2,1.html?lang=c&stype=&postchannel=0000&workyear=99&cotype=99°reefrom=99&jobterm=99&companysize=99&providesalary=99&lonlat=0%2C0&radius=-1&ord_field=0&confirmdate=9&fromType=&dibiaoid=0&address=&line=&specialarea=00&from=&welfare='
#设置请求头
headers={
'Cookie': 'uid=6120d9ad9342bd596063a1caa5e700c8; nsearch=jobarea%3D%26%7C%26ord_field%3D%26%7C%26recentSearch0%3D%26%7C%26recentSearch1%3D%26%7C%26recentSearch2%3D%26%7C%26recentSearch3%3D%26%7C%26recentSearch4%3D%26%7C%26collapse_expansion%3D; _ujz=MTYxNTY1MjMxMA%3D%3D; ps=needv%3D0; adv=adsnew%3D0%26%7C%26adsnum%3D2199132%26%7C%26adsresume%3D1%26%7C%26adsfrom%3Dhttps%253A%252F%252Fwww.baidu.com%252Fbaidu.php%253Fsc.000000jk39biGWe9FCyuShty_aMNHEWD5_pNXOAJq5oBMfqtVdPak5nCc0CSoecJnK-czyQKCC745-ZJ0OVxI7zG83PuLrGEKFp9GiGH-j1bNMOrZrlcqbkfzay5GMMW0egdYl66KlxgR5qC8Shed0Qu_GDCTWt1UZp0fqrNfmzHgkNGgtkCMLZO5gAQlRdUO5moyBIhZe56aN5bX6.Db_NR2Ar5Od66CHnsGtVdXNdlc2D1n2xx81IZ76Y_u2qSSEWbl_4TUj5eOS8zZqOSFYOoYUlj5ZtSjtElZdq-SHe35SkbLY5dtxqTglS54pPO3e3et-LYxtjWOvrWqXhJzOqE66ObwxegYgOCNEOeZeIZV8OUSEUdeyPbPpUDSr1FIIbzgfLqhiex3GuzuQ8-5HvUO7i_nYQZA1__R0.U1Yk0ZDqPH7JUvc0TA-W5H00IjdJUvc0pyYqnW0Y0ATqTZFB0ZNG5yF9pywd0ZKGujYkn0KWpyfqnHD30AdY5HDsnHIxnH0krNtknjfYg1nvnjD0pvbqn0KzIjY4n100uy-b5HDYPW-xnWDsrH7xnWbdnWPxnWbdnWKxnWbsrH-xnWbdPW9xnW63n1IxnWbznWKxnWm1PHKxnWbYPWKxnWbvPj00mhbqnHRdg1Ddr7tznjf0UynqnH6zrHbsrj6zrNtknj0kg1Dsn-ts0Z7spyfqn0Kkmv-b5H00ThIYmyTqn0K9mWYsg100ugFM5H00TZ0qnWbLPH0snjn1P6K8IM0qna3snj0snj0sn0KVIZ0qn0KbuAqs5H00ThCqn0KbugmqTAn0uMfqn0KspjYs0Aq15H00mMTqnH00UMfqn0K1XWY0mgPxpywW5gK1QyPV0A-bm1dRfsKYIgnqnHc4nHRknjmdrHRLnWf4nW63nWn0ThNkIjYkPHmdn1R3P1fzrjn40ZPGujdhuhfYuHnLm10snAm4nHF-0AP1UHdAf1b4nWmLrjRznbNaP1wK0A7W5HD0TA3qn0KkUgfqn0KkUgnqn0KlIjYk0AdWgvuzUvYqn7tsg1DsPjuxn0Kbmy4dmhNxTAk9Uh-bT1Ysg1Kxn1n3Pjc4Pdts0ZK9I7qhUA7M5H00uAPGujYs0ANYpyfqQHD0mgPsmvnqn0KdTA-8mvnqn0KkUymqn0KhmLNY5H00XMK_Ignqn0K9uAu_myTqnfK_uhnqn0KEIjYs0AqzTZfqnanscznsc10WnansQW0snj0snansczns0APzm1Y1PjD1n6%2526word%253D51job%2526ck%253D4702.2.127.285.564.290.550.423%2526shh%253Dwww.baidu.com%2526us%253D1.0.1.0.0.0.0%2526bc%253D110101; slife=lowbrowser%3Dnot%26%7C%26lastlogindate%3D20190809%26%7C%26securetime%3DVWkANlk5A2ICY1NoWmlaOVNhBDY%253D; track=registertype%3D1; 51job=cuid%3D161565231%26%7C%26cusername%3Dphone_13124677419_201908097566%26%7C%26cpassword%3D%26%7C%26cname%3D%25D1%25EE%25D3%25D1%26%7C%26cemail%3Dayouleyang%2540qq.com%26%7C%26cemailstatus%3D0%26%7C%26cnickname%3D%26%7C%26ccry%3D.0z6DBWuU5bQc%26%7C%26cconfirmkey%3D%25241%2524Z.XBF.fe%2524p7gSHeS%252Fox4niAc8IxBDw0%26%7C%26cresumeids%3D.0ZJUV4DUrVTU%257C%26%7C%26cautologin%3D1%26%7C%26cenglish%3D0%26%7C%26sex%3D0%26%7C%26cnamekey%3D%25241%25249.n6uUi.%2524xZtxv4qHPoyz%252FYLZm734Z.%26%7C%26to%3D82c7f22825d5faf5a3b114afc23ff27f5d4d7adf%26%7C%26; search=jobarea%7E%60000000%7C%21ord_field%7E%600%7C%21recentSearch0%7E%601%A1%FB%A1%FA000000%2C00%A1%FB%