python环境这里就是默认安好的状态
首先要确保安装了selenium
在cmd/终端界面输入
pip install selenium
如果是pycharm的话那就是
Pycharm->Preferences (Mac)
Window->Preferences (Windows)
这是已经安装的情况
若是没安好点加号搜索selenium点击Install Package即可
这里的本质其实就是Pycharm替你使用pip install selenium来安装
装好之后在http://npm.taobao.org/mirrors/chromedriver/ 下载和自己chrome浏览器同版本的chromedriver
Mac端把解压好的(unix可执行)文件放在/usr/local/bin目录下(command+shift+G可以快速查找目录)
Windows则需要配置环境变量,变量名为path,然后是你放那个文件的路径
这一切都准备好之后
先用以下代码自动登录获取cookie(或者cookie过期了用这个重新获取)
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
import json
web = webdriver.Chrome()
class CookieSpider:
def get_QR(self):
web.get('https://weibo.com/login.php')
web.maximize_window()
web.implicitly_wait(10)
web.find_element(By.XPATH, '//*[@id="pl_login_form"]/div/div[1]/div/a[2]').click()
def get_cookie(self):
cookie_ = web.get_cookies() # 获取cookies
json_cookie = json.dumps(cookie_) # 转换成字符串保存
with open("微博cookie.txt", "w") as f:
f.write(json_cookie)
print("cookie保存成功")
cs = CookieSpider()
cs.get_QR()
time.sleep(20) # 扫码完成后输入,进入后面程序
cs.get_cookie()
web.close()
然后就可以用下边代码自动登录并发微博了
from selenium import webdriver
import json
import time
from selenium.webdriver.common.by import By
# 打开网址
wb = webdriver.Chrome()
# 隐式地等待
wb.implicitly_wait(3)
wb.maximize_window()
wb.get('https://weibo.com')
time.sleep(5)
# 向浏览器添加保存的cookies
try:
cookies = json.load(open("微博cookie.txt", "rb"))
for cookie in cookies:
cookie_dict = {
"domain": cookie.get('domain'),
'name': cookie.get('name'),
'value': cookie.get('value'),
"expires": "",
'path': '/',
'httpOnly': False,
'HostOnly': False,
'Secure': False}
wb.add_cookie(cookie_dict)
except Exception as e:
print(e)
## 刷新
time.sleep(10)
wb.refresh()
your_content="自动发微博测试"
wb.find_element(By.XPATH, '//*[@id="homeWrap"]/div[1]/div/div[1]/div/textarea').send_keys(your_content)
wb.find_element(By.XPATH, '//*[@id="homeWrap"]/div[1]/div/div[4]/div/button').click()
这里关于xpath的获取方法就不多做阐述