该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
模拟登陆算法不复杂的网站用requests就可以。
懒得想算法就用selenium,模拟点击是基本功能。结合无头浏览器,性能不差。
之前做的贴子发布脚本的一部分。
from selenium.webdriver import Firefox
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.support import expected_conditions as expected
from selenium.webdriver.support.wait import WebDriverWait
import pickle
import time
import requests
from lxml import etree
import os
options = Options()
# 无头模式,就是后台自动登录,不出现真实的浏览器
options.add_argument('-headless')
# 实例一个浏览器对象
driver = Firefox(executable_path='geckodriver', options=options
driver.get('https://tieba.baidu.com')
# 加载pkl为cookies
cookies = pickle.load(open("cookies.pkl", "rb"))
for cookie in cookies:
driver.add_cookie(cookie)
# 先登陆一下网页,让浏览器识别cookies
driver.get(tie_url)
# 开启显示等待
wait = WebDriverWait(driver, timeout=30)
# 等待出现a元素,把网页拉到最下
wait.until(expected.visibility_of_element_located((By.XPATH, '//a[@title=""]'))).send_keys("", Keys.END)
# 输入文章的标题
wait.until(expected.visibility_of_element_located((By.XPATH, '//input[@class="editor_textfield editor_title ui_textfield j_title j_topic_sug_input normal-prefix"]'))).send_keys(tt)
time.sleep(3)
# 输入文章内容
wait.until(expected.visibility_of_element_located((By.CSS_SELECTOR, '#ueditor_replace'))).send_keys(cc)
time.sleep(5)
# 点击发布
wait.until(expected.visibility_of_element_located((By.CSS_SELECTOR, '.btn_default'))).click()
print('完成发布')