1. #coding:utf-8
  2. #requests主要用于获取网页的源码
  3. import requests
  4. #re主要用于在网页源码上筛选出自己需要的信息
  5. import re
  6. #sys 在本程序中主要使用setdefaultencoding方法
  7. import sys
  8. #xlwt用于往本地磁盘上创建xls文档并向其中使用内容
  9. import xlwt
  10. reload(sys)
  11. #声明了一个变量,该变量控制网站内容的翻页
  12. page=1
  13. #声明了一个变量,该变量控制写入excel中的行
  14. hang=0
  15. #初始化workbook类,并设置编码style_compression表示是否压缩
  16. book=xlwt.Workbook(encoding=\'utf-8\',style_compression=0)
  17. #在excel中创建一个工作簿名为dede,第二个参数代表该单元格中已有内容时是否还可以再次进行写入
  18. sheet=book.add_sheet(\'dede\',cell_overwrite_ok=True)
  19. #是设置默认的string的编码格式
  20. sys.setdefaultencoding(\'utf8\')
  21. #设置读取网页的头部,该行代码主要用于模拟浏览器来访问网站
  22. _header={\'User-Agent\':\'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36\'}
  23. #通过手动查看,需要扒取的网页共有81页
  24. for page in range(82):
  25. #获取当前页面的源代码
  26. qhmu=requests.get("http://search.51job.com/list/010000,000000,0000,00,9,99,web%25E5%2589%258D%25E7%25AB%25AF,2,{0}.html?lang=c&stype=1&postchannel=0000&workyear=99&cotype=99&degreefrom=99&jobterm=99&companysize=99&lonlat=0%2C0&radius=-1&ord_field=0&confirmdate=9&fromType=&dibiaoid=0&address=&line=&specialarea=00&from=&welfare=".format(page),headers=_header)
  27. #将获取到的编码为国标库
  28. qhmu.encoding=\'gbk\'
  29. #找到一整条信息,其中包括职位名称、公司名称、工作地点、薪资、发布时间
  30. one_info=re.findall(\'<div class="el">(.*?)</div>\',qhmu.text,re.S)
  31. #遍历一整条信息
  32. for eachInfo in one_info:
  33. #没有合适的一次就可以找到职位名称的正则表达式,所以分两步来查找
  34. zwmc=re.findall(\'<input class="checkbox"(.*?)</span>\',eachInfo,re.S)
  35. for each in zwmc:
  36. zwmcl=re.search(\'">(.*?)</a>\',each,re.S)
  37. #将找到的这条信息的职位名称写入到excel表格中
  38. sheet.write(hang, 0,\'职位名称:{0}\'.format(zwmcl.group(1).strip()))
  39. gsmc=re.search(\'<span class="t2"><a target="_blank" title="(.*?)"\',eachInfo,re.S)
  40. # 将找到的这条信息的公司名称写入到excel表格中
  41. sheet.write(hang,1, \'公司名称:{0}\'.format(gsmc.group(1).strip()))
  42. gsdd=re.search(\'<span class="t3">(.*?)</span>\',eachInfo,re.S)
  43. # 将找到的这条信息的公司地点写入到excel表格中
  44. sheet.write(hang,2, \'公司地点:{0}\'.format(gsdd.group(1).strip()))
  45. xz=re.search(\'<span class="t4">(.*?)</span>\',eachInfo,re.S)
  46. # 将找到的这条信息的薪资写入到excel表格中
  47. sheet.write(hang, 3, \'薪资:{0}\'.format(xz.group(1).strip()))
  48. fbsj=re.search(\'<span class="t5">(.*?)</span>\',eachInfo,re.S)
  49. # 将找到的这条信息的发布时间写入到excel表格中
  50. sheet.write(hang, 4, \'发布时间:{0}\'.format(fbsj.group(1).strip()))
  51. #一条信息写入完成后换下一行写入下条信息
  52. hang+=1
  53. #将内存中的该excel文档保存在本地目录之中
  54. book.save(\'d:\\abc.xls\')
  55. print "success!"

每一句我都写了注释,新手自己研究的,代码不是很漂亮,以后优化的各个信息会在后续的博客中给出

实现效果为在D盘根目录下多了一个名为abc.xls的文档

打开该文档,职位信息已经写入成功

 

版权声明:本文为jiyongxin原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/jiyongxin/p/7001722.html