为什么运行代码之后,下一页点击不了,报错显示找不到该元素

来源:4-6 项目作业

吴老师在线叛逃

2023-01-03 22:51:16

from selenium import webdriver
from selenium.webdriver.common.by import By
import pymongo
# 等待用包
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from lxml import etree
import time


class Total(object):
    def __init__(self):
        self.driver = webdriver.Chrome()
        self.driver.maximize_window()
        pymon = pymongo.MongoClient(host='127.0.0.1', port=27017, username='admin', password='123456')
        ljk = pymon['python_money']
        self.ji_he = ljk['data']

    # 登录,点击搜索
    def sign_in(self, url):
        self.driver.get(url)
        if WebDriverWait(self.driver, 5, 0.5).until(EC.presence_of_element_located((By.XPATH, "//input[@id='keywordInput']"))):
            self.driver.find_element(by=By.XPATH, value="//input[@id='keywordInput']").send_keys('python工程师')
            time.sleep(3)
            self.driver.find_element(by=By.XPATH, value="//button[@id='search_btn']").click()
            time.sleep(3)

    # 解析并存储
    def analysis(self, init):
        html = etree.HTML(init)
        data = html.xpath("//div[@class='e sensors_exposure']")
        for i in data:
            names = i.xpath(".//span[@class='jname at']/text()")
            times = i.xpath(".//span[@class='time']/text()")
            money = i.xpath(".//span[@class='sal']/text()")
            place = i.xpath(".//span[@class='d at']/text()")
            welfare = i.xpath(".//p[@class='tags']/text()")
            datas = {
                "names": names,
                "times": times,
                "money": money,
                "place": place,
                "welfare": welfare
            }
            self.ji_he.insert_one(datas)

    def main(self):
        self.sign_in("https://we.51job.com/pc/search?keyword=&searchType=2&sortType=0&metro=")
        while True:
            self.analysis(self.driver.page_source)
            time.sleep(2)
            self.driver.find_element(by=By.XPATH, value="//button[@class='btn-next']").click()
            if self.driver.find_element(by=By.XPATH, value="//button[@class='btn-next']").get_attribute("disabled"):
                break
        self.driver.quit()











if __name__ == '__main__':
    start_up = Total()
    start_up.main()


写回答

1回答

好帮手慕小猿

2023-01-04

同学,你好!在点击下一页后,网页正在跳转,跳转过程中无法获取到下一页的disabled 属性,

需要使用time.sleep()等待几秒

https://img.mukewang.com/climg/63b4e3ff09c1037813110260.jpg

祝学习愉快~

0

0 学习 · 4469 问题

查看课程