完整代码:

    1. #2022-04-11
    2. #导入模块
    3. from selenium import webdriver
    4. from selenium.webdriver.common.by import By
    5. from selenium.webdriver.common.keys import Keys #导入模块
    6. from selenium.webdriver.chrome.options import Options #导入无头模式包
    7. import time
    8. #创建一个参数对象,用来控制chorme以无界面模式打开
    9. chrome_options = Options()
    10. chrome_options.add_argument('window-size=1920x3000')#指定浏览器分辨率
    11. chrome_options.add_argument('--headless')
    12. chrome_options.add_argument('--disable-gpu')
    13. driver=webdriver.Chrome('C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe',options=chrome_options)
    14. time.sleep(2)#让浏览器休息一下,避免访问过快,被封ip
    15. driver.get('https://wiki.hmatm.com')
    16. #找到输入框
    17. username = "用户名"#这个是你自己的用户名
    18. password = "密码"#这个是你的密码
    19. driver.find_element_by_name("os_username").send_keys(username)#//*[@id="os_username"]
    20. driver.find_element_by_name("os_password").send_keys(password)#//*[@id="os_password"]
    21. driver.find_element(By.XPATH,'//*[@id="loginButton"]').click() #找到登录按钮,点击
    22. time.sleep(3)
    23. driver.find_element(By.XPATH,'//*[@id="confluence-questions-link"]').click()
    24. time.sleep(1)
    25. driver.find_element(By.XPATH,'//*[@id="cq-nav-topics"]/a').click()
    26. driver.find_element(By.XPATH,'//*[@id="cq-all-topics-container"]/div[2]/div[1]/div[2]/a').click()
    27. time.sleep(5)
    28. driver.find_element(By.XPATH,'//*[@id="main"]/div[3]/div/ul/li[2]/a').click()
    29. time.sleep(3)
    30. driver.execute_script("document.documentElement.scrollTop=10000")#加载全部数据,下拉滚动条的方法
    31. time.sleep(1)
    32. lis=driver.find_elements(By.XPATH,'//*[@id="main"]/ol/li')
    33. # print(lis)
    34. for li in lis:
    35. nameTag=li.find_elements(By.XPATH,'./div[2]/h3/a')[0]
    36. nameTagtxt=nameTag.text
    37. nameHref=nameTag.get_attribute('href')
    38. print(nameTagtxt, nameHref)#可以不打印这句,直接保存
    39. time.sleep(1)
    40. with open(r"问题confluence汇总.txt","a",encoding="utf-8") as f: #使用with open()新建对象f ,a 表示追加
    41. f.write("{},{}".format(nameTagtxt,nameHref)) #将列表中的数据循环写入到文本文件中
    42. f.write("\n")#换行
    43. print('爬取数据结束!!')

    思路:
    1、用selenium爬取数据的原理就是伪人工操作;
    2、先是访问网站,输出用户名和密码,登录;

    这一步,要找到用户名和密码的输入框 image.png username = “用户名”#这个是你自己的用户名 password = “密码”#这个是你的密码 driver.find_element_by_name(“os_username”).send_keys(username)#//[@id=”os_username”] driver.find_element_by_name(“os_password”).send_keys(password)#//[@id=”os_password”] 还有登录按钮 image.png driver.find_element(By.XPATH,’//*[@id=”loginButton”]’).click()

    3、访问具体位置;
    4、输出结果;
    5、保存txt数据;
    image.png
    输出结果为:
    image.png