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&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)
    #将获取到的编码为国标库
    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的文档

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

 

posted @ 2017-06-13 15:53  小新丶  阅读(396)  评论(0编辑  收藏  举报