第二十四节课:requests爬虫实战

# 第二十四节课:requests爬虫实战
'''
本节课大纲:
1- 爬虫的概述
2- 爬虫实操流程
3- 实战操作
'''
# 1- 爬虫的概述
# 我们了解的网络爬虫是什么?  ------爬取数据
# 用户获取网络数据的方式:浏览器提交请求-->下载网页代码-->解析/渲染成页面
# 爬虫流程:模拟浏览器发送请求-->下载网页代码-->只提取有用的数据-->存放于数据库或者文件中
# 网络爬虫:想网站发起请求,获取资源后分析并提取有用数据的程序
# 网络爬虫的作用:信息时代,数据可以创造财富
# 互联网中最有价值的便是数据,比如天猫商城的商品信息,链家网的租房信息等等,这些数据都代表了各行各业的真金白银

# 2- 爬虫操作流程
# 很简单 Python(用于构造编辑请求)+requests(用这个库区发送和解析请求)+excel(存数据) 就可以实现爬虫
# 1、模拟浏览器发送请求
# 2、下载网页代码
# 3、只提取有用的数据
# 4、存放于数据库或者文件中
# 实例:
import requests,re
''' 
反扒机制:
    1- 判别是否是浏览器--后果:报错远程主机强迫关闭了一个现有链接--解决方案:模拟浏览器
    2- 验证码 拖拽或者输入
    3- 封IP
    4- 封账号
'''
user_header = {'User-Agent':'Baiduspider'}
# 1 使用requests构建请求
web_usl='https://search.51job.com/list/000000,000000,0000,00,9,07,%25E8%25BD%25AF%25E4%25BB%25B6%25E6%25B5%258B%25E8%25AF%2595%25E5%25B7%25A5%25E7%25A8%258B%25E5%25B8%2588,2,1.html?lang=c&postchannel=0000&workyear=99&cotype=99&degreefrom=99&jobterm=99&companysize=99&ord_field=0&dibiaoid=0&line=&welfare='
resp = requests.get(web_usl,headers = user_header)  #如果有反扒机制,就在括号里面加上headers,即写作:resp = requests.get(web_usl,headers =user_header)
# 2 获取响应数据
# print(resp.text)    #打印出来有超级多的代码
# 3 提取有效数据
'''
<div class="e ">
                <em class="check" name="delivery_em" onclick="checkboxClick(this)"></em>
                <input class="checkbox" type="checkbox" name="delivery_jobid" value="124737128" style="display:none" jt="0">
                <p class="info"><span class="title"><a title="网络优化工程师-技术类(重庆)" target="_blank" href="https://jobs.51job.com/chongqing/124737128.html?s=02">网络优化工程师-技术类(重庆)</a></span><a title="移动设计院重庆分公司" target="_blank" class="name" href="https://jobs.51job.com/chongqing/co6028494.html">移动设计院重庆分公司</a><span class="location name">重庆</span><span class="location"></span><span class="time">12-06</span></p>
                <p class="order">学历要求:本科<span>|</span>工作经验:<span>|</span>公司性质:国企<span>|</span>公司规模:</p>
                # <p class="text" title="学历要求:本科及以上专业要求:通信工程类、计算机软件类岗位职责:从事通信网络优化相关工作:1、对移动通信网络进行各类专项优化,解决网络中存在的问题;2、使用各类优化工具平台进行数据处理、分析,编制相应材料;3、网络优化项目对应小工具、小平台的软件需求整理、软件开发工作。任职资格:1、掌握本专业的基础知识;2、熟练应用计算机以及office等应用软件;3、具备良好的语言、文字表达能力以及较好的沟通协调能力;4、能吃苦耐劳。">学历要求:本科及以上专业要求:通信工程类、计算机软件类岗位职责:从事通信网络优化相关工作:1、对移动通信网络进行各类专项优化,解决网络中存在的问题;2、使用各类优化工具平台进行数据处理、分析,编制相应材料;3、网络优化项目对应小工具、小平台的软件需求整理、软件开发工作。任职资格:1、掌握本专业的基础知识;2、熟练应用计算机以及office等应用软件;3、具备良好的语言、文字表达能力以及较好的沟通协调能力;4、能吃苦耐劳。</p>
                # <p class="opat">
                    <input value="124737128" name="hidJobID124737128" id="hidJobID124737128" type="hidden" jt="0">
                    <a class="sq sicon Dm" href="javascript:void(0);" onclick="delivery('hidJobID124737128', '1', '//i.51job.com', 'c', 'jobs.51job.com', '02', '02', '//img03.51jobcdn.com');return false;">立即申请</a><br><a class="sc sicon Dm" href="javascript:void(0);" onclick="saveCollection('124737128');">收藏</a>
                </p>
            </div>
'''
# 这里需要提取数据,用正则表达式,导入re
lines = re.findall('<div class="e">(.*?)</div>',resp.text,re.S)  #返回的是列表信息.现在打印出来是空的.加上参数re.S只抓取有元素的行
#########获取每一行具体数据
for line in lines:
    #1- 获取岗位名称
    temp = re.findall('class="info"><span class="title"><a title="(.*?)"href=',line,re.S)
    #2- 获取公司名称
    #3- 获取地址
    #4- 获取薪资
    #5- 获取发布时间
    print(temp)
# 4 存储Excel

 

posted @ 2020-12-05 16:50  六友家的大佬  阅读(43)  评论(0编辑  收藏  举报