#coding=utf-8
#!文件类型: python
#!创建时间: 2018/11/12 10:37
#!作者: SongBin
#!文件名称: csdnPl.py
from selenium import webdriver
import time
# browser=webdriver.Chrome()#用google会报错,暂时不知道为什么
browser = webdriver.Firefox()
browser.get('https://passport.csdn.net/account/login')
# 转到用户名密码登陆,这里是个难点,卡了我好久,后来在stackoverflow上看到这样的解决方案,试了一下,果然灵
aElements = browser.find_elements_by_tag_name("a")
for name in aElements:
if (name.get_attribute("href") is not None and "javascript:void" in name.get_attribute("href")):
print("IM IN HUR")
name.click()
break
time.sleep(0.5)
browser.find_element_by_id('username').send_keys('你的用户名')
# time.sleep(0.5)
browser.find_element_by_id('password').send_keys('你的密码')
# time.sleep(0.5)
browser.find_element_by_class_name('logging').click()
print("logging success!")
time.sleep(2)
# print (browser.page_source)
# 转到的下载页面
browser.get('https://download.csdn.net/my/downloads')
# 获取我下载过的内容的评价链接
time.sleep(0.5)
# 获取总的页数
lastpage = browser.find_element_by_link_text("尾页").get_attribute('href')
# print (lastpage)
totlapage = int(lastpage[len(lastpage) - 2:])
for i in range(2, totlapage + 1):
# 构造下载链接
url1 = 'https://download.csdn.net/my/downloads/' + str(i)
# 打开每一页
browser.get(url1)
time.sleep(0.5)
# 获取评论链接
urlc = browser.find_elements_by_link_text("立即评价")
for comment_link_per_page in urlc:
# 转到评论链接
try:
print(comment_link_per_page.get_attribute('href'))
commurl = comment_link_per_page.get_attribute('href')
# 打开新的标签页
browser.execute_script("window.open()")
print(browser.window_handles)
# 切换到新的标签页中
browser.switch_to.window(browser.window_handles[1])
# 打开评论链接
browser.get(commurl)
time.sleep(1)
#点击评论填写框触发样式
browser.find_element_by_id("cc_body").click()
time.sleep(0.5)
# 输入评论内容
browser.find_element_by_id('cc_body').send_keys("非常感谢作者分享,还可以参考[url=https://www.songbin.top/ta/18]https://www.songbin.top/ta/18[/url]来解决该问题!")
time.sleep(0.5)
# 给出几颗星,这里默认给出的是五颗星(xpath定位比css定位好使,有时候css定位不行但是xpath定位却可以,但是xpath可能会有变化,首选css定位,神奇)
browser.find_element_by_css_selector("#csdn_dl_commentbox>li[class='stats'] :last-child").click()
#browser.find_element_by_xpath("/html/body/div[5]/div[2]/div[1]/div[2]/div/div[2]/div[2]/div[1]/ul/li[2]/i[5]").click()
time.sleep(0.5)
# 点击发表评论
browser.find_element_by_css_selector(".comm_btn").click()
#browser.find_element_by_xpath("/html/body/div[6]/div[2]/div[1]/div[2]/div/div[2]/div[2]/div[2]/button").click()
time.sleep(0.5)
# 关闭打开的标签页
browser.execute_script("window.close()")
# 返回原来的tab标签页中
browser.switch_to.window(browser.window_handles[0])
except:
browser.execute_script("window.close()")
selenium+webdriver实现自动化登陆并评论csdn下载过的资源
1、安装selenium
很简单,控制台pip install selenium即可
安装pip,到easy_install.exe所在的地方Scripts目录下,执行指令“easy_install.exe pip”
2、下载安装三大浏览器驱动driver放在python根目录中,将python根目录设置环境变量
1.chromedriver 下载地址:https://code.google.com/p/chromedriver/downloads/list
2.Firefox的驱动geckodriver 下载地址:https://github.com/mozilla/geckodriver/releases/
3.IE的驱动IEdriver 下载地址:http://www.nuget.org/packages/Selenium.WebDriver.IEDriver/
注意:下载解压后,将chromedriver.exe , geckodriver.exe , Iedriver.exe发到Python的安装目录,例如 D:\python 。 然后再将Python的安装目录添加到系统环境变量的Path下面。
注意驱动与浏览器的版本对应关系
chromedriver与chrome版本对应表,firefox、geckodriver
chromedriver与chrome对应表(记得就会更新):
chromedriver版本 | 支持的Chrome版本 |
---|---|
v2.36 | v64-66 |
v2.35 | v62-64 |
v2.34 | v61-63 |
v2.33 | v60-62 |
v2.32 | v59-61 |
v2.31 | v58-60 |
v2.30 | v58-60 |
v2.29 | v56-58 |
v2.28 | v55-57 |
v2.27 | v54-56 |
v2.26 | v53-55 |
v2.25 | v53-55 |
v2.24 | v52-54 |
v2.23 | v51-53 |
v2.22 | v49-52 |
v2.21 | v46-50 |
v2.20 | v43-48 |
v2.19 | v43-47 |
v2.18 | v43-46 |
v2.17 | v42-43 |
v2.13 | v42-45 |
v2.15 | v40-43 |
v2.14 | v39-42 |
v2.13 | v38-41 |
v2.12 | v36-40 |
v2.11 | v36-40 |
v2.10 | v33-36 |
v2.9 | v31-34 |
v2.8 | v30-33 |
v2.7 | v30-33 |
v2.6 | v29-32 |
v2.5 | v29-32 |
v2.4 | v29-32 |
下载chromedriver地址:http://chromedriver.storage.googleapis.com/index.html
二、
firefox与geckodriver对应表,在网上找了好像没有很明确对应关系,
本人在windows上的firefox经常自己update,估计并不是按照版本号对应起来的。
在linux上 直接yum install firefox 安装即可
下载geckodriver地址:https://github.com/mozilla/geckodriver/releases
3,测试是否可以正常运行
然后打开Python IDLE分别输入以下代码来启动不同的浏览器
启动谷歌浏览器
#coding=utf-8
#!文件类型: python
#!创建时间: 2018/11/12 10:37
#!作者: SongBin
#!文件名称: csdnPl.py
import time
from selenium import webdriver
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
'''
当浏览器没有默认安装路径安装时
binary = FirefoxBinary('C:\\Program Files\\Chrome \\Chrome.exe')
browser=webdriver.Chrome(chrome_binary=binary)
'''
browser=webdriver.Chrome()
browser.get('https:/www.csdn.net')
time.sleep(3)
browser.close()
启动火狐浏览器
#coding=utf-8
#!文件类型: python
#!创建时间: 2018/11/12 10:37
#!作者: SongBin
#!文件名称: csdnPl.py
import time
from selenium import webdriver
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
'''
当浏览器没有默认安装路径安装时
binary = FirefoxBinary('C:\\Program Files\\Mozilla Firefox\\firefox.exe')
browser=webdriver.Firefox(firefox_binary=binary)
'''
browser=webdriver.Firefox()
browser.get('https:/www.csdn.net')
time.sleep(3)
browser.close()
启动IE浏览器
#coding=utf-8
#!文件类型: python
#!创建时间: 2018/11/12 10:37
#!作者: SongBin
#!文件名称: csdnPl.py
import time
from selenium import webdriver
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
'''
当浏览器没有默认安装路径安装时
binary = FirefoxBinary('C:\\Program Files\\Mozilla ie\\ie.exe')
browser=webdriver.Ie(ie_binary=binary)
'''
browser=webdriver.Ie()
browser.get('https:/www.csdn.net')
time.sleep(3)
browser.close()
4.技巧:
selenium(二)查找定位目标 ID XPATH CSS 操作目标
元素定位之CssSelector
css_selector定位总结
5.最终脚本
#coding=utf-8
#!文件类型: python
#!创建时间: 2018/11/12 10:37
#!作者: SongBin
#!文件名称: csdnPl.py
from selenium import webdriver
import time
# browser=webdriver.Chrome()#用google会报错,暂时不知道为什么
browser = webdriver.Firefox()
browser.get('https://passport.csdn.net/account/login')
# 转到用户名密码登陆,这里是个难点,卡了我好久,后来在stackoverflow上看到这样的解决方案,试了一下,果然灵
aElements = browser.find_elements_by_tag_name("a")
for name in aElements:
if (name.get_attribute("href") is not None and "javascript:void" in name.get_attribute("href")):
print("IM IN HUR")
name.click()
break
time.sleep(0.5)
browser.find_element_by_id('username').send_keys('dfjjfxyl')
# time.sleep(0.5)
browser.find_element_by_id('password').send_keys('Wylc1234567')
# time.sleep(0.5)
browser.find_element_by_class_name('logging').click()
print("logging success!")
time.sleep(2)
# print (browser.page_source)
# 转到的下载页面
browser.get('https://download.csdn.net/my/downloads')
# 获取我下载过的内容的评价链接
time.sleep(0.5)
# 获取总的页数
lastpage = browser.find_element_by_link_text("尾页").get_attribute('href')
# print (lastpage)
totlapage = int(lastpage[len(lastpage) - 2:])
for i in range(2, totlapage + 1):
# 构造下载链接
url1 = 'https://download.csdn.net/my/downloads/' + str(i)
# 打开每一页
browser.get(url1)
time.sleep(0.5)
# 获取评论链接
urlc = browser.find_elements_by_link_text("立即评价")
for comment_link_per_page in urlc:
# 转到评论链接
try:
print(comment_link_per_page.get_attribute('href'))
commurl = comment_link_per_page.get_attribute('href')
# 打开新的标签页
browser.execute_script("window.open()")
print(browser.window_handles)
# 切换到新的标签页中
browser.switch_to.window(browser.window_handles[1])
# 打开评论链接
browser.get(commurl)
time.sleep(1)
#点击评论填写框触发样式
browser.find_element_by_id("cc_body").click()
time.sleep(0.5)
# 输入评论内容
browser.find_element_by_id('cc_body').send_keys("非常感谢作者分享,还可以参考[url=https://www.songbin.top/ta/18]https://www.songbin.top/ta/18[/url]来解决该问题!")
time.sleep(0.5)
# 给出几颗星,这里默认给出的是五颗星(xpath定位比css定位好使,有时候css定位不行但是xpath定位却可以,但是xpath可能会有变化,首选css定位,神奇)
browser.find_element_by_css_selector("#csdn_dl_commentbox>li[class='stats'] :last-child").click()
#browser.find_element_by_xpath("/html/body/div[5]/div[2]/div[1]/div[2]/div/div[2]/div[2]/div[1]/ul/li[2]/i[5]").click()
time.sleep(0.5)
# 点击发表评论
browser.find_element_by_css_selector(".comm_btn").click()
#browser.find_element_by_xpath("/html/body/div[6]/div[2]/div[1]/div[2]/div/div[2]/div[2]/div[2]/button").click()
time.sleep(0.5)
# 关闭打开的标签页
browser.execute_script("window.close()")
# 返回原来的tab标签页中
browser.switch_to.window(browser.window_handles[0])
except:
browser.execute_script("window.close()")
参考:
selenium+webdriver实现自动化登陆并评论csdn下载过的资源
selenium(二)查找定位目标 ID XPATH CSS 操作目标
#coding=utf-8
#!文件类型: python
#!创建时间: 2018/11/12 10:37
#!作者: SongBin
#!文件名称: csdnPl.py
from selenium import webdriver
import time
# browser=webdriver.Chrome()#用google会报错,暂时不知道为什么
browser = webdriver.Firefox()
browser.get('https://passport.csdn.net/account/login')
# 转到用户名密码登陆,这里是个难点,卡了我好久,后来在stackoverflow上看到这样的解决方案,试了一下,果然灵
aElements = browser.find_elements_by_tag_name("a")
for name in aElements:
if (name.get_attribute("href") is not None and "javascript:void" in name.get_attribute("href")):
print("IM IN HUR")
name.click()
break
time.sleep(1)
browser.find_element_by_id('username').send_keys('dfjjfxyl')
# time.sleep(1)
browser.find_element_by_id('password').send_keys('Wylc1234567')
# time.sleep(1)
browser.find_element_by_class_name('logging').click()
print("logging success!")
time.sleep(2)
# print (browser.page_source)
# 转到的下载页面
browser.get('https://download.csdn.net/my/downloads')
# 获取我下载过的内容的评价链接
time.sleep(1)
# 获取总的页数
lastpage = browser.find_element_by_link_text("尾页").get_attribute('href')
# print (lastpage)
totlapage = int(lastpage.split('/')[-1])
print(lastpage.split('/')[-1])
for i in range(2, totlapage + 1):
# 构造下载链接
url1 = 'https://download.csdn.net/my/downloads/' + str(i)
# 打开每一页
browser.get(url1)
time.sleep(1)
# 获取评论链接
urlc = browser.find_elements_by_link_text("立即评价")
for comment_link_per_page in urlc:
# 转到评论链接
try:
print(comment_link_per_page.get_attribute('href'))
commurl = comment_link_per_page.get_attribute('href')
# 打开新的标签页
browser.execute_script("window.open()")
print(browser.window_handles)
# 切换到新的标签页中
browser.switch_to.window(browser.window_handles[1])
# 打开评论链接
browser.get(commurl)
time.sleep(1)
#点击评论填写框触发样式
browser.find_element_by_id("cc_body").click()
time.sleep(1)
# 输入评论内容
browser.find_element_by_id('cc_body').send_keys("非常感谢作者分享,还可以参考[url=https://www.songbin.top/ta/18]https://www.songbin.top/ta/18[/url]来解决该问题!")
time.sleep(1)
# 给出几颗星,这里默认给出的是五颗星(xpath定位比css定位好使,有时候css定位不行但是xpath定位却可以,但是xpath可能会有变化,首选css定位,神奇)
browser.find_element_by_css_selector("#csdn_dl_commentbox>li[class='stats'] :last-child").click()
#browser.find_element_by_xpath("/html/body/div[5]/div[2]/div[1]/div[2]/div/div[2]/div[2]/div[1]/ul/li[2]/i[5]").click()
time.sleep(1)
# 点击发表评论
browser.find_element_by_css_selector(".comm_btn").click()
#browser.find_element_by_xpath("/html/body/div[6]/div[2]/div[1]/div[2]/div/div[2]/div[2]/div[2]/button").click()
time.sleep(1)
# 关闭打开的标签页
browser.execute_script("window.close()")
# 返回原来的tab标签页中
browser.switch_to.window(browser.window_handles[0])
except:
#当出现异常时忽略进行下一个评论
browser.execute_script("window.close()")
browser.switch_to.window(browser.window_handles[0])
pass
continue
#browser.execute_script("window.close()")
注意:本文归作者所有,未经作者允许,不得转载