作为杨超越的粉丝,我并不甘心做一个完全的白嫖党,所以有时我也会帮忙做做数据,点点赞、刷刷评等。今天,我突发奇想,能不能用python实现自动化刷评呢?要实现这个想法肯定是要自动化登录微博的,于是有了以下尝试。
本想通过直接注入用户名和密码进行登录
但是输入用户名和密码,点击登录后跳到了以下页面,所以这个登录方法就无法进行下去了。
所以,我决定用cookie实现登录访问。
驱动chromedriver.exe下载地址:
https://pan.baidu.com/s/199aoswA7Px7F2cPFYQNqKw
提取码:8b43
将驱动下载后,右击浏览器图标,选择“打开文件所在的位置”,复制chromedriver.exe 到谷歌浏览器的安装路径下,与Chrome.exe启动文件并列的目录下:
from selenium import webdriver # 从selenium导入webdriver
#引入chromedriver.exe
chromedriver="C:\Program Files\Google\Chrome\Application\chromedriver.exe" #chromedriver.exe所在目录
browser = webdriver.Chrome(chromedriver)
登录微博账号(网页版)
选择Network,并且选中XHR后,刷新一次网页,并在左侧框中选择以getstatus?ajwvr=6开头的文件,再选择Headers窗口。然后我们就可以在窗口中的Request Headers下找到cookie了。将其复制。
我们粘贴过来的是类似"name1=value1; name2=value2; name3=value3"的字符串,"; “将每一个cookie分开,而”="又将一个cookie的name和value分开。我们需要将每一个cookie的name和value都提取出来,并将其添加到浏览器对象中。
# 设置cookie
cookies = "name1=value1; name2=value2; name3=value3"
cookie_list = cookies.split("; ")# 将不同的cookie分离,并保存到列表里
for item in cookie_list:# 从列表里将cookie的name和value分别提取出来,并添加到浏览器对象中
cookies_name_value = item.split("=")
browser.add_cookie({
'name': cookies_name_value[0],
'value': cookies_name_value[1],
})
需要注意是的是,我们需要先发送登录页面的请求:https://weibo.com/login.php,再设置cookie(3.2中的操作),然后再发送刷评的微博的url:https://weibo.com/5644764907/Kc6j9BWOt?filter=hot&root_comment_id=0&type=comment#_rnd1619142836733。
操作完成后,我们就成功以登录的状态跳转到我们想要刷评的微博了。
输入评论
我们先要找到评论输入框的控件。在网页上右键单击,弹出菜单中选择“检查”,进入开发者模式。
然后依次进行下图中的操作:
这个时候,我们的粘贴板中就有了用于查找输入框控件的字符串,找到控件后,我们向其注入我们想要评论的内容。
点击“评论”发送
我们用与查找评论输入框相同的方法找到“评论”控件,并用代码将其点击,评论就得以发送了。
for i in range(100):
browser.find_element_by_css_selector("#Pl_Official_WeiboDetail__72 > div > div > div > div.WB_feed_repeat.S_bg1.WB_feed_repeat_v3 > div > div.WB_feed_publish.clearfix > div.WB_publish > div.p_input > textarea").clear()
browser.find_element_by_css_selector("#Pl_Official_WeiboDetail__72 > div > div > div > div.WB_feed_repeat.S_bg1.WB_feed_repeat_v3 > div > div.WB_feed_publish.clearfix > div.WB_publish > div.p_input > textarea").send_keys(i)
browser.find_element_by_css_selector("#Pl_Official_WeiboDetail__72 > div > div > div > div.WB_feed_repeat.S_bg1.WB_feed_repeat_v3 > div > div.WB_feed_publish.clearfix > div.WB_publish > div.p_opt.clearfix > div.btn.W_fr > a > em").click()
time.sleep(5)
import time # 为避免操作过快导致浏览器无法反应过来,导入time用time.sleep()函数推迟调用线程的运行
from selenium import webdriver # 从selenium导入webdriver
# 引入chromedriver.exe
chromedriver="C:\Program Files\Google\Chrome\Application\chromedriver.exe" #chromedriver.exe所在目录
browser = webdriver.Chrome(chromedriver)
# 设置登录微博需要打开的url
loginUrl = "https://weibo.com/login.php";
browser.get(loginUrl)
time.sleep(1)
# 设置cookie
cookies = "name1=value1; name2=value2; name3=value3"
cookie_list = cookies.split("; ")# 将不同的cookie分离,并保存到列表里
for item in cookie_list:# 从列表里将cookie的name和value分别提取出来,并添加到浏览器对象中
cookies_name_value = item.split("=")
browser.add_cookie({
'name': cookies_name_value[0],
'value': cookies_name_value[1],
})
#设置需要刷评的微博的url
url = "https://weibo.com/5644764907/Kc6j9BWOt?filter=hot&root_comment_id=0&type=comment#_rnd1619142836733"
browser.get(url)
time.sleep(1)
# 注入评论与发送
for i in range(100):
browser.find_element_by_css_selector("#Pl_Official_WeiboDetail__72 > div > div > div > div.WB_feed_repeat.S_bg1.WB_feed_repeat_v3 > div > div.WB_feed_publish.clearfix > div.WB_publish > div.p_input > textarea").clear()
browser.find_element_by_css_selector("#Pl_Official_WeiboDetail__72 > div > div > div > div.WB_feed_repeat.S_bg1.WB_feed_repeat_v3 > div > div.WB_feed_publish.clearfix > div.WB_publish > div.p_input > textarea").send_keys(i)
time.sleep(1)
browser.find_element_by_css_selector("#Pl_Official_WeiboDetail__72 > div > div > div > div.WB_feed_repeat.S_bg1.WB_feed_repeat_v3 > div > div.WB_feed_publish.clearfix > div.WB_publish > div.p_opt.clearfix > div.btn.W_fr > a > em").click()
time.sleep(5)