吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2752|回复: 4
收起左侧

[Python 原创] python 爬取智联招聘-翻页抓取

  [复制链接]
lz270978971 发表于 2019-9-19 09:30
本帖最后由 lz270978971 于 2019-9-19 09:32 编辑

继上个版本后,又花了点时间,增加了翻页的小功能,还有优化的空间。
等有时间了,在继续优化一下。
现在来看下源码:
[Python] 纯文本查看 复制代码
# -*- coding: utf-8 -*-
# [url=home.php?mod=space&uid=238618]@Time[/url]    : 2019/9/18 5:24 PM
# [url=home.php?mod=space&uid=686208]@AuThor[/url]  : python-小智!!
# @FileName: zhilian_1.py
# @Software: IntelliJ IDEA

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.keys import Keys
from pyquery import PyQuery as pq
import time


class ZhiLian:
    def __init__(self):
        # 设置 chrome 无界面化模式
        self.chrome_options = Options()
        self.chrome_options.add_argument('--headless')
        self.chrome_options.add_argument('--disable-gpu')
        self.driver = webdriver.Chrome(options=self.chrome_options)

    def home_url(self, search='python'):
        """
        获取搜索职位的url, demo里面默认搜索python,url是成都地址
        :param search:
        :return:
        """
        self.driver.get("https://www.zhaopin.com/chengdu")
        element = self.driver.find_element_by_class_name("zp-search__input")
        element.send_keys(f"{search}")
        element.send_keys(Keys.ENTER)
        # 切换窗口
        self.driver.switch_to.window(self.driver.window_handles[1])
        # 等待js渲染完成后,在获取html
        time.sleep(4)
        html = self.driver.find_element_by_xpath("//*").get_attribute("outerHTML")
        return html

    def get_content(self):
        """
        翻页获取数据
        :return:
        """
        page = 0
        html = self.home_url()
        url = self.driver.current_url
        host, para = url.split("?")
        doc = pq(html)
        flag = False
        while not flag:
            if page == 0:
                page += 1
            else:
                page += 1
                page_url = f"{host}?p={page}&{para}"
                print(page_url)
                self.driver.get(page_url)
                time.sleep(3)
                doc = pq(self.driver.find_element_by_xpath("//*").get_attribute("outerHTML"))
                disable = doc.find(".contentpile__jobcontent__notext")
                flag = 1 if disable else ""
            yield doc

    def data_processing(self):
        """
        处理数据
        :return:
        """
        for doc in self.get_content():
            contents = doc(".contentpile__content__wrapper")
            for content in contents.items():
                jobname = content(".contentpile__content__wrapper__item__info__box__jobname__title").text()
                companyname = content(".contentpile__content__wrapper__item__info__box__cname").text()
                saray = content(".contentpile__content__wrapper__item__info__box__job__saray").text()
                demand = content(".contentpile__content__wrapper__item__info__box__job__demand").text()
                yield jobname, companyname, saray, ",".join(demand.split("\n"))


datas = ZhiLian().data_processing()
for data in datas:
    print(data)

免费评分

参与人数 3吾爱币 +4 热心值 +3 收起 理由
苏紫方璇 + 3 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
drakpj + 1 + 1 谢谢@Thanks!
王星星 + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

我傻瓜1991 发表于 2019-9-19 09:38
谢谢分享
头像被屏蔽
王星星 发表于 2019-9-19 09:59
yanmingming 发表于 2019-9-19 10:04
drakpj 发表于 2019-9-19 10:21
python刚入门,这个正好学习
Calvin 发表于 2019-9-19 10:36
谢谢分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-16 15:42

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表