关注公众号:逸佳笔记,回复关键词“副业”,免费获取各平台引流教程合集以及10个小项目教程
或者下面这个网盘链接也可以免费获取各平台引流教程和小项目教程:
链接:https://pan.baidu.com/s/101HhdI6oA5apANTIfiW4_Q?pwd=6666 提取码:6666
或者复制下方链接到浏览器打开可以获取全网最新项目,实时更新中!
https://zy.66yyba.com/?ref=1385
说一下这个逻辑吧,并不是说通过 N 多个cookie来对我们自己的账号点击关注,我没那么多账号=、=
这里是使用 selenium 脚本拿自己的账号去给别人点赞或者点关注 然后评论留言,让别人回访你,所以运气好就被关注了呗。(我这里测试用,只给别人评论、)

实现是比较简单的,主要是一些细节问题。可以看到登录进来的首页推荐就有文章,而且他不用翻页,你可以一直进行操作。
但是也是有问题的: 推荐里面有广告。他的标签跟普通的还不一样
看见→_→广告了么。。 太坑了

然后是这个会打开新窗口页面的问题,

我刚开始使用的是更改标签的方式,把元素里面的target=”_blank”给改成了空。
虽然也能使用,但是效果不是很理想。
后面我就换成了 driver.switch_to_window 来切换窗口句柄。
另外当到一定数量的时候,这个地方需要往下滑动才能出现更多的数据。

还有一个问题,你评论的次数过多,就会弹出一个alert、也是比较坑的

会在pycharm中抛出异常:

所以针对这几个问题来具体进行分析处理:
首先是这个广告的标签问题:
我的处理方法是加了try。当selenium定位不到的时候,会抛出异常。然后pass掉。进行下一次匹配。
for i in range(1,3000): #定位每一个 title 名。try:if driver.find_element_by_xpath('//*[@id="feedlist_id"]/li[{}]/div/div[1]/h2'.format(i)):driver.find_element_by_xpath('//*[@id="feedlist_id"]/li[{}]/div/div[1]/h2'.format(i)).click()except:pass
然后是这个滚动条需要拖动的问题,我在元素个数到40的时候,执行JS将滚动条拉到最低部分,然后再用send_KEY,发送DOWN,使用键盘下滑。
js_gd = "var q=document.documentElement.scrollTop=10000"driver.execute_script(js_gd)for j in range(5): #定位body元素,发送5次键盘down命令driver.find_element_by_xpath('/html/body'.format(i)).send_keys(Keys.DOWN)
新窗口的问题:
使用selemium中的current_window_handle,来进行窗口切换。
最后使用 close()关闭当前的一个窗口,不是关闭所有。
index_handle = driver.current_window_handle #index页driver.find_element_by_xpath('//*[@id="feedlist_id"]/li[{}]/div/div[1]/h2'.format(i)).click()new_handle = driver.current_window_handle #详情页all_handle = driver.window_handlesfor handle in all_handle:if handle != index_handle:driver.switch_to_window(handle)driver.close()
最后是这个alert的问题:
这里需要进行alert检测,当出现alert的时候,使用accept()来确认。
也是需要加上try的,因为selenium直接操作alert的时候,没有alert就会报错。
try:driver.switch_to_alert().accept()time.sleep(3)driver.find_element_by_xpath('//*[@id="commentform"]/div/div[4]/input').click()except:pass
测试图:

完整代码:时间匆忙,没有优化,可能还会有些问题。
from selenium import webdriverimport timefrom selenium.webdriver.common.action_chains import ActionChainsfrom selenium.webdriver.common.keys import Keysdriver = webdriver.Chrome(executable_path=r'C:UserslenovoDesktopchromedriver_win32chromedriver.exe')driver.get('https://passport.csdn.net/login')driver.find_element_by_link_text('账号登录').click()driver.find_element_by_xpath('//*[@id="all"]').clear()driver.find_element_by_xpath('//*[@id="all"]').send_keys('your_name')driver.find_element_by_xpath('//*[@id="password-number"]').clear()driver.find_element_by_xpath('//*[@id="password-number"]').send_keys('your_password')driver.find_element_by_xpath('//*[@id="app"]/div/div/div/div[2]/div[4]/form/div/div[6]/div/button').click()time.sleep(2)action = ActionChains(driver)n=40for i in range(1,3000):if i > n:js_gd = "var q=document.documentElement.scrollTop=10000"driver.execute_script(js_gd)n=9999try:index_handle = driver.current_window_handletime.sleep(1)for j in range(5):driver.find_element_by_xpath('/html/body'.format(i)).send_keys(Keys.DOWN)if driver.find_element_by_xpath('//*[@id="feedlist_id"]/li[{}]/div/div[1]/h2'.format(i)):driver.find_element_by_xpath('//*[@id="feedlist_id"]/li[{}]/div/div[1]/h2'.format(i)).click()time.sleep(1)new_handle = driver.current_window_handleall_handle = driver.window_handlesfor handle in all_handle:if handle != index_handle:driver.switch_to_window(handle)time.sleep(1)driver.find_element_by_xpath('//*[@id="comment_content"]').click()driver.find_element_by_xpath('//*[@id="comment_content"]').send_keys('666 写的很好')driver.find_element_by_xpath('//*[@id="commentform"]/div/div[4]/input').click()time.sleep(1)try:driver.switch_to_alert().accept()time.sleep(3)driver.find_element_by_xpath('//*[@id="commentform"]/div/div[4]/input').click()except:passdriver.close()time.sleep(1)driver.switch_to_window(index_handle)except Exception as e:# driver.get('https://www.csdn.net/')print(i,"错误原因:",e)
原文始发于微信公众号(Pythonlx):
本文转载自以上首发公众号,如有侵权,联系站长删除






