python+selenium实现微博登录和自动评论

作为杨超越的粉丝,我并不甘心做一个完全的白嫖党,所以有时我也会帮忙做做数据,点点赞、刷刷评等。今天,我突发奇想,能不能用python实现自动化刷评呢?要实现这个想法肯定是要自动化登录微博的,于是有了以下尝试。

目录

  • 1 分析
  • 2 引入selenium模块及驱动
    • 2.1 浏览器驱动导入
    • 2.2 将安装好的Chromedriver.exe引入到代码中
  • 3 模拟登录
    • 3.1 获取cookie
    • 3.2 解析cookie并添加到浏览器对象
    • 3.3 发起请求
    • 3.4 发送评论
    • 3.4 效果图
  • 4 完整代码

1 分析

本想通过直接注入用户名和密码进行登录
​​
但是输入用户名和密码,点击登录后跳到了以下页面,所以这个登录方法就无法进行下去了。
python+selenium实现微博登录和自动评论_第1张图片
所以,我决定用cookie实现登录访问。

2 引入selenium模块及驱动

2.1 浏览器驱动导入

驱动chromedriver.exe下载地址:
https://pan.baidu.com/s/199aoswA7Px7F2cPFYQNqKw
提取码:8b43
将驱动下载后,右击浏览器图标,选择“打开文件所在的位置”,复制chromedriver.exe 到谷歌浏览器的安装路径下,与Chrome.exe启动文件并列的目录下:python+selenium实现微博登录和自动评论_第2张图片
python+selenium实现微博登录和自动评论_第3张图片

2.2 将安装好的Chromedriver.exe引入到代码中

from selenium import webdriver # 从selenium导入webdriver

#引入chromedriver.exe
chromedriver="C:\Program Files\Google\Chrome\Application\chromedriver.exe" #chromedriver.exe所在目录
browser = webdriver.Chrome(chromedriver)

3 模拟登录

3.1 获取cookie

  • 登录微博账号(网页版)

  • 登录到首页后,在网页上右键单击,弹出菜单中选择“检查”,进入开发者模式。
    python+selenium实现微博登录和自动评论_第4张图片

  • 选择Network,并且选中XHR后,刷新一次网页,并在左侧框中选择以getstatus?ajwvr=6开头的文件,再选择Headers窗口。然后我们就可以在窗口中的Request Headers下找到cookie了。将其复制。
    python+selenium实现微博登录和自动评论_第5张图片

3.2 解析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],
})

3.3 发起请求

需要注意是的是,我们需要先发送登录页面的请求:https://weibo.com/login.php,再设置cookie(3.2中的操作),然后再发送刷评的微博的url:https://weibo.com/5644764907/Kc6j9BWOt?filter=hot&root_comment_id=0&type=comment#_rnd1619142836733。
操作完成后,我们就成功以登录的状态跳转到我们想要刷评的微博了。

3.4 发送评论

  • 输入评论
    我们先要找到评论输入框的控件。在网页上右键单击,弹出菜单中选择“检查”,进入开发者模式。
    python+selenium实现微博登录和自动评论_第6张图片
    然后依次进行下图中的操作:
    python+selenium实现微博登录和自动评论_第7张图片
    这个时候,我们的粘贴板中就有了用于查找输入框控件的字符串,找到控件后,我们向其注入我们想要评论的内容。

  • 点击“评论”发送
    我们用与查找评论输入框相同的方法找到“评论”控件,并用代码将其点击,评论就得以发送了。

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)

3.4 效果图

python+selenium实现微博登录和自动评论_第8张图片

4 完整代码

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)

你可能感兴趣的:(python,python,selenium,cookie,chrome)