美文网首页
(一)刚入爬虫坑(3)——boss直聘数据爬取案例(xpath版

(一)刚入爬虫坑(3)——boss直聘数据爬取案例(xpath版

作者: 爱折腾的胖子 | 来源:发表于2018-09-20 04:15 被阅读0次

上一篇使用正则表达式提取了boss直聘的数据,感觉使用正则提取HTML数据有点困难,这一节使用xpath提取数据,会简单很多。python3中可以导入lxml库来使用xpath提取数据。

首先是安装lxml:
pip install lxml
还需要安装一个插件,在此处下载对应版本
切换到下载目录
pip install 文件名

然后在python3终端中输入命令,如果没有异常,则表示安装成功

from lxml import etree

发送HTTP请求的逻辑都是一样的,就是提取数据不同:

    def deal_page(self, li_list) :
        """
        处理页面中的数据
        :param li_list:li标签集合
        """
        for li in li_list :
            data = DataModel()
            data.title = self.is_None(li.xpath(".//div/div[@class=\"info-primary\"]/h3/a/div[@class=\"job-title\"]/text()"))[0]
            data.salary = self.is_None(li.xpath(".//div/div[@class=\"info-primary\"]/h3/a/span/text()"))[0]
            data.position = self.is_None(li.xpath(".//div/div[@class=\"info-primary\"]/p/text()[1]"))[0]
            data.working_life = self.is_None(li.xpath(".//div/div[@class=\"info-primary\"]/p/text()[2]"))[0]
            data.education = self.is_None(li.xpath(".//div/div[@class=\"info-primary\"]/p/text()[3]"))[0]
            data.company_name = self.is_None(li.xpath(".//div/div[@class=\"info-company\"]/div/h3/a/text()"))[0]
            data.company_type = self.is_None(li.xpath(".//div/div[@class=\"info-company\"]/div/p/text()[1]"))[0]
            if li.xpath(".//div/div[@class=\"info-company\"]/div/p/text()[3]") :
                data.financing_info = self.is_None(li.xpath(".//div/div[@class=\"info-company\"]/div/p/text()[2]"))[0]
                data.staff_numbers = self.is_None(li.xpath(".//div/div[@class=\"info-company\"]/div/p/text()[3]"))[0]
            else :
                data.financing_info = "".encode("utf-8")
                data.staff_numbers = self.is_None(li.xpath(".//div/div[@class=\"info-company\"]/div/p/text()[2]"))[0]
            data.recruiter_name = self.is_None(li.xpath(".//div/div[@class=\"info-publis\"]/h3/text()[1]"))[0]
            data.recruiter_job = self.is_None(li.xpath(".//div/div[@class=\"info-publis\"]/h3/text()[2]"))[0]
            data.release_time = self.is_None(li.xpath(".//div/div[@class=\"info-publis\"]/p/text()"))[0]
            self.data_list.append(data)
    def is_None(self, obj):
        """
        判断xpath获取的对象取值是否为空
        :param obj: xpath获取的对象
        """
        return obj if (obj) else [""]

上一篇一样然后把数据写入到记事本中。
完整代码

相关文章

网友评论

      本文标题:(一)刚入爬虫坑(3)——boss直聘数据爬取案例(xpath版

      本文链接:https://www.haomeiwen.com/subject/eatgnftx.html