栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Scrapy爬虫:实习僧网最新招聘信息抓取

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Scrapy爬虫:实习僧网最新招聘信息抓取

一:前言

继续练习Scrapy框架,这次抓取的是实习僧网最新的招聘信息,包括招聘岗位,时间,工资,学历要求,职位诱惑和职位描述等等。之后保存到mongodb和json文件中以备后续使用。爬虫中遇到了很多问题,比如不同解析函数传值、xpath配合正则、职位描述的网页结构多变,这些都一一解决了。代码地址:https://github.com/rieuse/ScrapyStudy

二:运行环境
  • IDE:Pycharm 2017

  • Python3.6

  • pymongo 3.4.0

  • scrapy 1.3.3

三:实例分析

1.首先进入官网:shixiseng.com 然后点击进入更多职位后就可以看见下面这样网页。

招聘主页之后点击最新发布,观察一下网址变化。当点击下一页的时候网址已经变成了http://www.shixiseng.com/interns?t=zj&p=2 ,这就说明了网址的构成就是“p=”后面就是网页的数目,随后我们将使用列表迭代生成我们爬取的页面地址。

start_urls = ['http://www.shixiseng.com/interns?t=zj&p={}'.format(n) for n in range(1, 501)]

2.知道主网址构成后,就进入开发者模式看看每个招聘信息的具体网址。这里只是一个不含有域名的链接,那么就需要自己构成对应详细的招聘信息网址

links = response.xpath('//div[@class="po-name"]/div[1]/a/@href').extract()for link in links:
    dlink = 'http://www.shixiseng.com' + link


3.进入详细的招聘网址后,明确要抓取的数据如下图。然后使用xpath抓取,这里有几个要注意的地方。re_first()即可在获取到使用正则匹配合适的第一个内容。获取工资、地理位置、学历、时间这一栏中会遇到分隔符 “|” 所以必要的时候匹配中文即可。

        item['name'] = response.xpath('/text()|//div[@class="dec_content"]/text()').extract()
        item['data'] = response.xpath('/*;q=0.8',        'Upgrade-Insecure-Requests': '1',        'Referer': 'http://www.shixiseng.com',        'Accept-Encoding': 'gzip,deflate,sdch',        'Accept - Language': 'zh-CN,zh;q=0.8,en;q=0.6'
    }    def parse(self, response):
        links = response.xpath('//div[@class="po-name"]/div[1]/a/@href').extract()        for link in links:
            dlink = 'http://www.shixiseng.com' + link            yield Request(dlink, meta={'link': dlink}, headers=self.headers, callback=self.parser_detail)    def parser_detail(self, response):
        item = ShixisengItem()
        item['name'] = response.xpath('/text()|//div[@class="dec_content"]/text()').extract()
        item['data'] = response.xpath('//*[@id="container"]/div[1]/div[1]/p[3]/text()').extract()[0]        yield item

①这里面涉及到了不同解析函数的传值问题,首先是从start_urls开始请求每一个链接然后得到的respose传给parser()函数进行第一次解析,这个函数的作用就是获取该页面上的每一个招聘页面的链接,之后yield一个Request()函数,使用meta这个参数即可传值,类型是dict,这里就把链接传给了parser_detail() 函数然后做进一步的解析获取最后想要的数据。
②使用了
正则+xpath
来获取准确的数据

五:总结

运行代码后就会获取实习僧最新的全部的招聘数据,一共大概是5000条数据很快就可以抓取下来保存到mongodb数据库和本地的json文件中。
代码都放在github中了,有喜欢的朋友可以点击 start follw,欢迎一起学习交流。**https://github.com/rieuse **


作者:rieuse
链接:https://www.jianshu.com/p/2af44e473d6c


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/222635.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号