您的位置 首页 php

Python+selenium自动上传图片至微博相册

Why?

写博客的时候每次使用图片都得先上传到新浪微博,然后在得到链接插入到markdown中。这样操作多来几次就受不了,于是就使用 python + selenium 自动上传博客图片。

第一步 安装环境

Python3

selenium

安装 Chrome driver [各版本下载地址](

第二步 获取XPath

首先打开登录页面,得到需要的账号、密码、登录的XPath(按F12打开开发者工具)

得到账号的XPath如下图(其他同理,注意是input标签哦):

得到上传照片按钮的XPath

得到普通上传的XPath

得到选择图片的Xpath

以下省略1000字……

第三步 撸代码调试

代码如下(简单易懂吧):


import os

from selenium import webdriver

import time

classConnect():

def__init__(self):

self.UserName = ‘你的账号’

self.PassWord = ‘你的密码’

# 微相册的登录地址

self.URL = ‘

defupload(self):

# chromedriver的安装地址(默认)

self.driver = webdriver.Chrome(‘C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe’)

# 最大化浏览器窗口

self.driver.maximize_window()

self.driver.get(self.URL)

# 输入账号

self.driver.find_element_by_xpath(‘//*[@id=”loginname”]’).send_keys(self.UserName)

# 输入密码

self.driver.find_element_by_xpath(‘//*[@id=”pl_login_form”]/div/div[3]/div[2]/div/input’).send_keys(self.PassWord)

# 点击登录(我这里忽略需要验证码的情况 可以用打码平台解决,或手动输入)

self.driver.find_element_by_xpath(‘//*[@id=”pl_login_form”]/div/div[3]/div[6]/a’).click()

# 等待3秒

time.sleep(3)

# 点击上传照片

self.driver.find_element_by_xpath(‘//*[@id=”user_info”]/div/a’).click()

time.sleep(3)

# 点击普通上传

self.driver.find_element_by_xpath(‘//*[@id=”flash_upload”]/p/a’).click()

# 打开需要记录上传的图片地址的txt

fr = open (“E:\python\pySinaAutoUpload\imgsPath.txt”, “r”)

content = fr.readlines()

# 循环上传图片

for index,val in enumerate(content):

imgPath = val.strip() #去掉每行头尾空白

time.sleep(3)

i = index + 1

if i == 1:

self.driver.find_element_by_xpath(‘//*[@id=”common_upload”]/ul/li/form/input’).send_keys(imgPath)

time.sleep(3)

self.driver.find_element_by_xpath(‘//*[@id=”common_upload”]/ul/li/form/a’).click()

else:

self.driver.find_element_by_xpath(‘//*[@id=”common_upload”]/ul/li[‘ + str(i) + ‘]/form/input’).send_keys(imgPath)

time.sleep(3)

self.driver.find_element_by_xpath(‘//*[@id=”common_upload”]/ul/li[‘ + str(i) + ‘]/form/a’).click()

# 关闭文件

fr. close ()

time.sleep(3)

# 点击下一步

self.driver.find_element_by_xpath(‘//*[@id=”common_upload”]/div/a’).click()

time.sleep(3)

# 点击保存并发布

self.driver.find_element_by_xpath(‘//*[@id=”uploadPanel”]/div[2]/div[4]/a’).click()

time.sleep(3)

# 得到上传文件的个数

count = len(content);

# 打开记录上传图片的URL的txt

fw = open(“E:\python\pySinaAutoUpload\imgsUrl.txt”, “w”)

# 循环得到图片Url

for j in range(count):

imgsUrl = self.driver.execute_script(‘return document.getElementsByClassName(“m_photoItem m_photoItem_a”)[‘ + str(j) + ‘]. getElementsByTagName (“img”)[0].src’)

time.sleep(3)

imgsUrl = imgsUrl.replace(“small”, “large”);

fw.write(imgsUrl + ‘\n’)

fw.flush()

fw.close()

Connect().upload()


第四步 编写bat批处理文件简化操作

为什么用bat? 一开始是想直接拖到.py文件上运行的,可以改了注册表重启什么的还是不管用

getPath.bat // 得到图片路径


@Echo Off&Setlocal Enabledelayedexpansion

Del /q E:\python\pySinaAutoUpload\imgsPath.txt

For /l %%a in (1,1,9) do (Call Set “f=%%%%~a”

(If defined f Dir /a-d /b /s !f!)>>E:\python\pySinaAutoUpload\imgsPath.txt)

For /f “tokens=*” %%i in (imgsPath.txt) do (

Ren “%%~dpni_New%%~xi” “%%~nxi”

)

exit


upload.bat //运行py


cd E:\python\pySinaAutoUpload\

python uploadImgs.py


好了,到此告一段落了,等有时间补上使用py模拟登陆的解决方案

文章来源:智云一二三科技

文章标题:Python+selenium自动上传图片至微博相册

文章地址:https://www.zhihuclub.com/150539.shtml

关于作者: 智云科技

热门文章

网站地图