zoukankan      html  css  js  c++  java
  • 手把手教你使用Python网络爬虫获取招聘信息

    1.前言 

    现在在疫情阶段,想找一份不错的工作变得更为困难,很多人会选择去网上看招聘信息。可是招聘信息有一些是错综复杂的。而且不能把全部的信息全部罗列出来,以外卖的58招聘网站来看,资料整理的不清晰。

    很多人学习python,不知道从何学起。
    很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
    很多已经做案例的人,却不知道如何去学习更加高深的知识。
    那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!
    QQ群:1097524789

    2.项目目标

    获取招聘信息,并批量把地点、 公司名、工资 、下载保存在txt文档。

    3.项目准备

    软件:PyCharm

    需要的库:requests、lxml、fake_useragent

    网站如下:

    https://gz.58.com/job/pn2/?param7503=1&from=yjz2_zhaopin&PGTID=0d302408-0000-3efd-48f6-ff64d26b4b1c&ClickID={} 
    

    点击下一页时,ClickID={}每增加一页自增加1,用{}代替变换的变量,再用for循环遍历这网址,实现多个网址请求。

    4.反爬措施

    该网站上的反爬主要有两点:

    1、 直接使用requests库,在不设置任何header的情况下,网站直接不返回数据

    2、同一个ip连续访问多次,直接封掉ip,起初我的ip就是这样被封掉的。

    为了解决这两个问题,最后经过研究,使用以下方法,可以有效解决。

    1、获取正常的 http请求头,并在requests请求时设置这些常规的http请求头。

    2、使用 fake_useragent ,产生随机的UserAgent进行访问。

    5.项目实现

    1、定义一个class类继承object,定义init方法继承self,主函数main继承self。导入需要的库和网址,代码如下所示。

    import requests 
    from lxml import etree 
    from fake_useragent import UserAgent 
     
     
    class  Zhaopin(object): 
        def __init__(self): 
            self.url = "https://gz.58.com/job/pn2/?param7503=1&from=yjz2_zhaopin&PGTID=0d302408-0000-3efd-48f6-ff64d26b4b1c&ClickID={}"  # /zhuanchang/:搜索的名字的拼音缩写 
     
        def main(self): 
            pass 
     
    if __name__ == '__main__': 
        Spider =  Zhaopin() 
        Spider.main() 
    

    2、随机产生UserAgent。

    for i in range(1, 50): 
        self.headers = { 
            'User-Agent': ua.random, 
        } 
    

    3、发送请求,获取响应, 页面回调,方便下次请求。

    def get_page(self, url): 
        res = requests.get(url=url, headers=self.headers) 
        html = res.content.decode("utf-8") 
        return html 
    

    4、xpath解析找到对应的父节点。

    def page_page(self, html): 
        parse_html = etree.HTML(html) 
        one = parse_html.xpath('//div[@class="main clearfix"]//div[@class="leftCon"]/ul/li') 
    

    5、for遍历,定义一个变量food_info保存,获取到二级页面对应的菜 名、 原 料 、下 载 链 接。

    for l in one: 
       o = l.xpath('.//a/span[1]/text()')[0].strip() 
       t = l.xpath('.//a//span[@class="name"]/text()')[0].strip() 
       f = l.xpath('.//p[@class="job_salary"]/text()') 
       thr = l.xpath('.//div[@class="comp_name"]//a/text()')[0].strip() 
       for e in f: 
           boss = ''' 
     
    %s:||%s:  
    公司:%s, 
    工资:%s元/月 
    ========================================================= 
                                   ''' % (o, t, thr, e) 
       print(str(boss) 
    

    6、将结果保存在txt文档中,如下所示。

    f = open('g.txt', 'a', encoding='utf-8')  # 以'w'方式打开文件 
    f.write(str(boss)) 
    # print(house_dict) 
    f.write("
    ")  # 键和值分行放,键在单数行,值在双数行 
    f.close() 
    

    7、调用方法,实现功能。

    html = self.get_page(url) 
    self.page_page(html) 
    

    6.效果展示

    1、点击绿色小三角运行输入起始页,终止页。

    2、运行程序后,结果显示在控制台,如下图所示。

    3、保存txt文档到本地,如下图所示。

    4、双击文件,内容如下图所示。

    7.小结

    1、不建议抓取太多数据,容易对服务器造成负载,浅尝辄止即可。

    2、本文章就Python爬取招聘网,在应用中出现的难点和重点,以及如何防止反爬,做出了相对于的解决方案。

    3、介绍了如何去拼接字符串,以及列表如何进行类型的转换。

    4、代码很简单,希望能够帮到你。

    5、欢迎大家积极尝试,有时候看到别人实现起来很简单,但是到自己动手实现的时候,总会有各种各样的问题,切勿眼高手低,勤动手,才可以理解的更加深刻。

    6、可以选择自己喜欢的分类,获取工作,找到自己喜欢工作。

  • 相关阅读:
    去掉移动端页面 input, textarea, button, a 标签获取焦点时显示的黑影
    屏蔽敏感词的正则表达式
    flex弹性布局详解
    解决微信小程序手机请求数据不返回的问题
    基于Express框架开发接口
    window平台下MongoDB安装和环境搭建
    搭建基于Express框架运行环境
    详解闭包(推荐)
    解决浏览器兼容ES6特性
    ES6之promise的使用
  • 原文地址:https://www.cnblogs.com/shann001/p/13279182.html
Copyright © 2011-2022 走看看