Python之selenium爬取考题代码并写入excel实践

101 篇文章 1 订阅
2 篇文章 0 订阅
import time

import xlwt
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait as wwait
# chrome和driver版本要匹配
# http://npm.taobao.org/mirrors/chromedriver/
browser = webdriver.Chrome(executable_path=r'F:\downloads\chromedriver_win32\chromedriver.exe')
url = "https://www.xiaoqiqiao.com/unlogin/#/login"

browser.get(url)
time.sleep(3)

# 3.刷新浏览器
browser.refresh()
# 4.设置浏览器的大小
browser.maximize_window()


username = "xxxxxx"
passwd = "xxxxxx"
# 输入用户名
browser.find_element_by_xpath('//*[@id="username"]').send_keys(username)
browser.find_element_by_xpath('//*[@id="password"]').send_keys(passwd)
time.sleep(1)
browser.find_element_by_xpath('//*[@id="root"]/div/div/div[2]/div[4]/div/div/form/div[3]/div/div/div/button').click()

time.sleep(1)

# 找到考试测评
wwait(browser, 10).until(
    EC.presence_of_element_located((By.XPATH, '//*[@id="rootWrapper"]/div/div/div[2]/div[1]/div/ul/li[3]'))).click()
# 找到题库练习
wwait(browser, 10).until(EC.presence_of_element_located(
    (By.XPATH, '//*[@id="rootWrapper"]/div/div/div[2]/div[2]/div/div/div[2]/ul/li[3]'))).click()
time.sleep(1)
# 进入题库
wwait(browser, 10).until(EC.presence_of_element_located(
    (By.XPATH, '//*[@id="rootWrapper"]/div/div/div[2]/div[2]/div/div/div[2]/table/tbody/tr/td[6]/span/a'))).click()

time.sleep(1)

handles = browser.window_handles
browser.switch_to.window(handles[1])

total_list = []
for i in range(600):
    total_data = []
    # 点击查看答案
    for_answer = wwait(browser, 10).until(
        EC.presence_of_element_located((By.XPATH, '//div[@class="look_answer downskip"]')))
        # 报错解决https://blog.csdn.net/qq_41424519/article/details/87906207
    webdriver.ActionChains(browser).move_to_element(for_answer).click(for_answer).perform()
    # 题目
    element_topic = wwait(browser, 10).until(EC.presence_of_element_located(
        (By.XPATH, '//*[@id="rootWrapper"]/div/div/div[2]/div/div/div/div/div/div[1]/div[3]/div[1]')))
    total_data.append(element_topic.text)

    elements = wwait(browser, 10).until(EC.presence_of_element_located(
        (By.XPATH, '//*[@id="rootWrapper"]/div/div/div[2]/div/div/div/div/div/div[1]/div[3]')))

    topic_infor = elements.find_elements_by_xpath('//div[@class="topic_infor"]')
    for option in topic_infor:
        total_data.append(option.text)
    true_answer = elements.find_elements_by_xpath('//span[@class="true_answer"]')
    answer_list = []
    for answer in true_answer:
        answer_list.append(answer.text)
    total_data.append(answer_list)
    # 格式化数据,为写入excel做准备
    if len(total_data) < 8:
        count = 8 - len(total_data)
        for k in range(count):
            total_data.insert(-1, "")
    total_list.append(total_data)
    # 下一题
    # 最后一题没有下一题按钮,故做此判断
    if i < 599:
        next_question = wwait(browser, 10).until(EC.presence_of_element_located((By.XPATH, '//div[@class="downskip"]')))
        webdriver.ActionChains(browser).move_to_element(next_question).click(next_question).perform()
    else:
        break

f = xlwt.Workbook()
sheet = f.add_sheet('QA', cell_overwrite_ok=True)

for hi in enumerate(total_list):
    for num in range(len(hi[1])):
        sheet.write(hi[0], num, hi[1][num])

f.save("QA.xls")
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值