selenium爬取职位,pyqt5设计界面,pyinstaller打包

本次记录,不详述原理,直接上代码。
github详细代码
本项目开发环境:
selenium + firefox + firefox驱动 + pycharm + qtdesigner

selenium模拟操作拉勾获取网页数据

部分代码如下:

def lagou_search_key(keyword, main_browser, wait, url=lagou_url):
    print("正在搜索:" + keyword)
    main_browser.get(url)
    try:
        btn = wait.until(
            EC.element_to_be_clickable((By.LINK_TEXT, '深圳站'))
        )
        btn.click()
    except Exception:
        pass

    try:
        input = wait.until(
            EC.presence_of_element_located((By.CSS_SELECTOR, '#search_input'))
        )
        btn_search = wait.until(
            EC.element_to_be_clickable((By.CSS_SELECTOR, '#search_button'))
        )
        input.send_keys(keyword)
        time.sleep(2)
        btn_search.click()
        # handle = main_browser.current_window_handle
        # handles = main_browser.window_handles
        # if len(handles) > 1:
        #     for h in handles:
        #         if h != handle:
        #             main_browser.switch_to_window(h)
        #             time.sleep(2)
        #             return main_browser.page_source
        # else:
        #     return main_browser.page_source
        time.sleep(2)
        return main_browser.page_source
    except TimeoutException:
        lagou_search_key(keyword, main_browser, wait)
def lagou_next_page(main_browser, wait, max_page=100):
    try:
        page_click = wait.until(
                EC.element_to_be_clickable((By.CSS_SELECTOR, '.pager_next '))
            )
        page_click.click()
        pager_is_current = main_browser.find_element_by_css_selector('.pager_is_current')
        current_page = int(pager_is_current.text)
        if current_page > max_page:
            return None
        return main_browser.page_source
    except TimeoutException:
        return None

pyQT5设计界面

部分代码如下:

class myWindow(QtWidgets.QMainWindow, Ui_Form):
    def __init__(self):
        super(myWindow, self).__init__()
        self.setupUi(self)
        self.lineEdit.setText("python")
        self.lineEdit_2.setText("2")
        self.lineEdit_3.setText(os.getcwd())
        self.pushButton.clicked.connect(self.get_input)

    def get_input(self):
        self.setEnabled(False)
        self.filename = self.lineEdit.text()
        self.max_page = int(self.lineEdit_2.text())
        self.save_path = self.lineEdit_3.text()
        self.search_url = self.lineEdit_4.text()
        self.b, self.w = create_browser()
        html = lagou_search_key(self.filename, self.b, self.w, self.search_url)
        csv_name = os.path.join(self.save_path, self.filename + '.csv')
        headers = ['发布时间','职位链接', '职位', '职位位置','薪资', '基本要求', '公司', '公司规模', '公司链接']
        lagou_csv_write(csv_name, headers, html)
        while True:
            time.sleep(2)
            html = lagou_next_page(self.b, self.w, self.max_page)
            if not html:
                break
            else:
                lagou_csv_write(csv_name, headers, html, writeheader=False)
        self.b.quit()
        self.setEnabled(True)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

指尖码动

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值