鱼C论坛

 找回密码
 立即注册
查看: 1938|回复: 2

[已解决]爬虫selinum,for循环失效

[复制链接]
发表于 2021-5-30 16:51:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 白本羽 于 2021-5-30 16:54 编辑

目标:自动遍历该网页下的题目,并提交,之后爬取正确答案,前面没有问题


我的代码:
  1. from selenium import webdriver
  2. from lxml import etree
  3. import requests
  4. import time
  5. import random
  6. import json

  7. from selenium.webdriver.remote.webelement import WebElement

  8. headers = {
  9.     "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
  10.                   "Chrome/90.0.4430.93 Safari/537.36 Edg/90.0.818.56 "
  11. }
  12. browser = webdriver.Edge(executable_path = "MicrosoftWebDriver.exe")
  13. # 让浏览器发起一个指定url的请求
  14. browser.get("https://www.yooc.me/login")
  15. # 定位标签
  16. account_input = browser.find_element_by_xpath('/html/body/div[2]/div/div/div[2]/div/div[1]/form/div[2]/input')
  17. account_input.send_keys('账号')
  18. password_input = browser.find_element_by_xpath('/html/body/div[2]/div/div/div[2]/div/div[1]/form/div[3]/input')
  19. password_input.send_keys('密码')
  20. # 用page_source获取当前页面的源码数据
  21. response = browser.page_source
  22. tree = etree.HTML(response)
  23. code_url = tree.xpath('/html/body/div[2]/div/div/div[2]/div/div[1]/form/div[4]/img/@src')[0]
  24. text_response = requests.get(url = code_url, headers = headers).content
  25. with open("./code_text.jpg", "wb") as fp:
  26.     fp.write(text_response)
  27.     code_text = input("请查看验证码,并在30秒内输入:")

  28. code_text_input = browser.find_element_by_xpath('/html/body/div[2]/div/div/div[2]/div/div[1]/form/div[4]/input[1]')
  29. # 与标签交互,输入文本
  30. code_text_input.send_keys(code_text)

  31. login = browser.find_element_by_id('submit')
  32. login.click()
  33. time.sleep(2)

  34. topic_url = browser.find_element_by_xpath('/html/body/div[2]/div[2]/table/tbody/tr/td/div[1]/div[3]/div[1]/a[2]')
  35. topic_url.click()
  36. time.sleep(2)

  37. handles = browser.window_handles
  38. browser.switch_to.window(handles[1])
  39. exam_url = browser.find_element_by_xpath('/html/body/section/section/div[1]/div[4]/a')
  40. exam_url.click()
  41. time.sleep(2)

  42. exam_detail = browser.find_element_by_xpath('/html/body/section/section/div[2]/div[3]/ul/li[1]/div[2]/a[2]')
  43. exam_detail.click()
  44. time.sleep(2)

  45. confirm_btn = browser.find_element_by_xpath('/html/body/div[12]/div[3]/div/div[1]')
  46. confirm_btn.click()
  47. time.sleep(5)

  48. bodylist = browser.find_elements_by_xpath('/html/body/section/section/div[5]/div[@class=question-board]')

  49. for each in bodylist: # 定位题目选项的标签并随机单击一个.此处整个循环不执行,也不报错,直接忽略了.
  50.     print(each.text)
  51.     templist = each.find_elements_by_tag_name('label')
  52.     islist = random.choice(templist)
  53.     islist.click()
  54.     print("选项已勾选!")
复制代码

以下为页面选项的格式代码:
<div class="question-board" id="question-31960407">
            
            <p class="q-cnt crt">2、<span>[1分]</span> </p><p class="q-cnt crt">随着对外开放的进一步扩大,中共中央和国务院在1990年作出的战略举措是( )。</p><p></p><ol><li>
                    <input id="31960407_1_0" type="radio" name="31960407_1" value="0"><label for="31960407_1_0">A. 建立厦门经济特区</label>
                </li>

                <li>
                    <input id="31960407_1_1" type="radio" name="31960407_1" value="1"><label for="31960407_1_1">B. 建立珠海经济特区</label>
                </li>

                <li>
                    <input id="31960407_1_3" type="radio" name="31960407_1" value="3"><label for="31960407_1_3">C. 开发开放上海浦东</label>
                </li>

                <li>
                    <input id="31960407_1_2" type="radio" name="31960407_1" value="2"><label for="31960407_1_2">D. 开发、开放海南经济特区</label>
                </li></ol>
          </div>
最佳答案
2021-5-30 20:52:51
bodylist估计是个空。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-5-30 20:52:51 | 显示全部楼层    本楼为最佳答案   
bodylist估计是个空。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-1 15:07:15 | 显示全部楼层
suchocolate 发表于 2021-5-30 20:52
bodylist估计是个空。

确实为空列表,是上面的xpath定位少了"",导致是空值,现在好了.
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-23 05:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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