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的文档
打开该文档,职位信息已经写入成功