Python-16:爬虫实战-爬出前程无忧中WEB前端相关信息
- #coding:utf-8
- #requests主要用于获取网页的源码
- import requests
- #re主要用于在网页源码上筛选出自己需要的信息
- import re
- #sys 在本程序中主要使用setdefaultencoding方法
- import sys
- #xlwt用于往本地磁盘上创建xls文档并向其中使用内容
- import xlwt
- reload(sys)
- #声明了一个变量,该变量控制网站内容的翻页
- page=1
- #声明了一个变量,该变量控制写入excel中的行
- hang=0
- #初始化workbook类,并设置编码style_compression表示是否压缩
- book=xlwt.Workbook(encoding=\'utf-8\',style_compression=0)
- #在excel中创建一个工作簿名为dede,第二个参数代表该单元格中已有内容时是否还可以再次进行写入
- sheet=book.add_sheet(\'dede\',cell_overwrite_ok=True)
- #是设置默认的string的编码格式
- sys.setdefaultencoding(\'utf8\')
- #设置读取网页的头部,该行代码主要用于模拟浏览器来访问网站
- _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\'}
- #通过手动查看,需要扒取的网页共有81页
- for page in range(82):
- #获取当前页面的源代码
- 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°reefrom=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)
- #将获取到的编码为国标库
- qhmu.encoding=\'gbk\'
- #找到一整条信息,其中包括职位名称、公司名称、工作地点、薪资、发布时间
- one_info=re.findall(\'<div class="el">(.*?)</div>\',qhmu.text,re.S)
- #遍历一整条信息
- for eachInfo in one_info:
- #没有合适的一次就可以找到职位名称的正则表达式,所以分两步来查找
- zwmc=re.findall(\'<input class="checkbox"(.*?)</span>\',eachInfo,re.S)
- for each in zwmc:
- zwmcl=re.search(\'">(.*?)</a>\',each,re.S)
- #将找到的这条信息的职位名称写入到excel表格中
- sheet.write(hang, 0,\'职位名称:{0}\'.format(zwmcl.group(1).strip()))
- gsmc=re.search(\'<span class="t2"><a target="_blank" title="(.*?)"\',eachInfo,re.S)
- # 将找到的这条信息的公司名称写入到excel表格中
- sheet.write(hang,1, \'公司名称:{0}\'.format(gsmc.group(1).strip()))
- gsdd=re.search(\'<span class="t3">(.*?)</span>\',eachInfo,re.S)
- # 将找到的这条信息的公司地点写入到excel表格中
- sheet.write(hang,2, \'公司地点:{0}\'.format(gsdd.group(1).strip()))
- xz=re.search(\'<span class="t4">(.*?)</span>\',eachInfo,re.S)
- # 将找到的这条信息的薪资写入到excel表格中
- sheet.write(hang, 3, \'薪资:{0}\'.format(xz.group(1).strip()))
- fbsj=re.search(\'<span class="t5">(.*?)</span>\',eachInfo,re.S)
- # 将找到的这条信息的发布时间写入到excel表格中
- sheet.write(hang, 4, \'发布时间:{0}\'.format(fbsj.group(1).strip()))
- #一条信息写入完成后换下一行写入下条信息
- hang+=1
- #将内存中的该excel文档保存在本地目录之中
- book.save(\'d:\\abc.xls\')
- print "success!"
每一句我都写了注释,新手自己研究的,代码不是很漂亮,以后优化的各个信息会在后续的博客中给出
实现效果为在D盘根目录下多了一个名为abc.xls的文档
打开该文档,职位信息已经写入成功
版权声明:本文为jiyongxin原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。