完整代码:
#2022-04-11#导入模块from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.common.keys import Keys #导入模块from selenium.webdriver.chrome.options import Options #导入无头模式包import time#创建一个参数对象,用来控制chorme以无界面模式打开chrome_options = Options()chrome_options.add_argument('window-size=1920x3000')#指定浏览器分辨率chrome_options.add_argument('--headless')chrome_options.add_argument('--disable-gpu')driver=webdriver.Chrome('C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe',options=chrome_options)time.sleep(2)#让浏览器休息一下,避免访问过快,被封ipdriver.get('https://wiki.hmatm.com')#找到输入框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"]driver.find_element(By.XPATH,'//*[@id="loginButton"]').click() #找到登录按钮,点击time.sleep(3)driver.find_element(By.XPATH,'//*[@id="confluence-questions-link"]').click()time.sleep(1)driver.find_element(By.XPATH,'//*[@id="cq-nav-topics"]/a').click()driver.find_element(By.XPATH,'//*[@id="cq-all-topics-container"]/div[2]/div[1]/div[2]/a').click()time.sleep(5)driver.find_element(By.XPATH,'//*[@id="main"]/div[3]/div/ul/li[2]/a').click()time.sleep(3)driver.execute_script("document.documentElement.scrollTop=10000")#加载全部数据,下拉滚动条的方法time.sleep(1)lis=driver.find_elements(By.XPATH,'//*[@id="main"]/ol/li')# print(lis)for li in lis:nameTag=li.find_elements(By.XPATH,'./div[2]/h3/a')[0]nameTagtxt=nameTag.textnameHref=nameTag.get_attribute('href')print(nameTagtxt, nameHref)#可以不打印这句,直接保存time.sleep(1)with open(r"问题confluence汇总.txt","a",encoding="utf-8") as f: #使用with open()新建对象f ,a 表示追加f.write("{},{}".format(nameTagtxt,nameHref)) #将列表中的数据循环写入到文本文件中f.write("\n")#换行print('爬取数据结束!!')
思路:
1、用selenium爬取数据的原理就是伪人工操作;
2、先是访问网站,输出用户名和密码,登录;
这一步,要找到用户名和密码的输入框
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”] 还有登录按钮
driver.find_element(By.XPATH,’//*[@id=”loginButton”]’).click()
3、访问具体位置;
4、输出结果;
5、保存txt数据;
输出结果为:
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”]
还有登录按钮
driver.find_element(By.XPATH,’//*[@id=”loginButton”]’).click()