使用selenium登录微博并发送一条图文微博

使用selenium登录微博并发送一条图文微博

selenium 是一个用于Web应用程序测试的工具。在使用python登录微博时,其登录时的密码,用户名加密有些麻烦,可以使用selenium操作浏览器登录获取cookie。

selenium安装

直接pip就可以搞定: pip install selenium
使用selenium驱动chrome浏览器需要下载chromedriver,而且chromedriver版本需要与chrome的版本对应,版本错误的话则会运行报错。
Chromedriver下载地址http://npm.taobao.org/mirrors/chromedriver/.

声明并调用浏览器对象

在这里我使用selenium操作chrom浏览器进入微博主页

from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://weibo.com/')

实现登录

在使用selenium打开网页时会有些慢,这里需要设置一个等待

import time
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
locator = (By.XPATH,'//div[@class="info_list username"]/div/input')
WebDriverWait(driver, 20, 0.5).until(EC.presence_of_element_located(locator))  # 等待用户名输入框加载完成

加载完成后输入用户名,密码完成登录

WebDriverWait(driver, 20, 0.5).until(EC.presence_of_element_located(locator))
username = driver.find_element_by_xpath('//div[@class="info_list username"]/div/input')
password = driver.find_element_by_xpath('//div[@class="info_list password"]/div/input')
btn = driver.find_element_by_xpath('//div[@class="info_list login_btn"]/a')
username.send_keys('')  # 这里填用户名
password.send_keys('')  # 这里填写密码
btn.click()  # 提交

这时就已经完成登录了

发送图文微博

在完成登录后,网页的跳转需要一定时间,这里需要再加一个等待

locator=(By.XPATH,'//div[@class="input"]/textarea')
WebDriverWait(driver, 20, 0.5).until(EC.presence_of_element_located(locator))

在文本框输入文本

text = driver.find_element_by_xpath('//div[@class="input"]/textarea')
data = 'test test test test'
text.send_keys(data)

上传图片
这里使用的是图片的绝对地址

img_up = driver.find_element_by_xpath('//div[@class="kind"]/a[@action-type="multiimage"]/div/form/input')
img_up.send_keys(r'D:\python文件\baidu_requests\dist\img_data\1.jpg')
time.sleep(3) # 图片的上传需要时间,这里设置休眠3秒

发送微博

dtn = driver.find_element_by_xpath('//div[@class="func"]/a')
dtn.click()

关闭浏览器

driver.quit()

整体代码

import time
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()  # 创建浏览器对象
driver.get('https://weibo.com/')  # 打开微博首页

locator = (By.XPATH,'//div[@class="info_list username"]/div/input')
WebDriverWait(driver, 20, 0.5).until(EC.presence_of_element_located(locator))  # 设置等待登录框加载

username = driver.find_element_by_xpath('//div[@class="info_list username"]/div/input')  # 获取用户名输入框
password = driver.find_element_by_xpath('//div[@class="info_list password"]/div/input')  # 获取密码输入框
btn = driver.find_element_by_xpath('//div[@class="info_list login_btn"]/a')  # 获取登录按钮
username.send_keys('')  # 输入用户名
password.send_keys('')  # 输入密码
btn.click()  # 登录

locator=(By.XPATH,'//div[@class="input"]/textarea')
WebDriverWait(driver, 20, 0.5).until(EC.presence_of_element_located(locator))  # 设置等待文本框加载

text = driver.find_element_by_xpath('//div[@class="input"]/textarea')  # 获取文本输入框
img_up = driver.find_element_by_xpath('//div[@class="kind"]/a[@action-type="multiimage"]/div/form/input')  # 获取图片上传位置
dtn = driver.find_element_by_xpath('//div[@class="func"]/a')  # 获取提交按钮

data = 'test test test test'
text.send_keys(data)  # 输入文本
img_up.send_keys(r'D:\python文件\baidu_requests\dist\img_data\1.jpg')  # 上传图片
time.sleep(3)  # 等待3秒
dtn.click()  # 提交
driver.quit()  # 关闭浏览器

你可能感兴趣的:(基础操作)