selenium 对于浏览器自动化很方便,但需要额外下载其他程序来支持浏览器调用。chrome需要chromedriver。firefox需要geckodriver。网上找到对应自己浏览器版本下载。最好和浏览器放在一个文件夹下。并把路径添加进path。网上搜一下就搞定了。
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driverOptions = webdriver.ChromeOptions()
driverOptions.add_argument(r"user-data-dir=C:\Users\86185\AppData\Local\Google\Chrome\User Data")
#利用cookie登录,只要把自己浏览器下的user data路径替换就行。
#driverOptions.add_argument('-headless')
#headless模式,70版本以前可以同时添加。
driver = webdriver.Chrome(options=driverOptions)
driver.get('https://www.douyu.com/74751')#打开网页,url为网址
如果不用driveroptions(),会打开全新的浏览器(没有任何记录)。可以无限打开新浏览器。但添加driveroptions()就只能打开一个(带记录,和自己打开的一样)浏览器,打开第二个会报错。
Firefox和chrome差不多,把ChromeOptions()换成FirefoxOptions()。cookie路径换成Firefox下的(随机8位).default文件就行了。
from selenium import webdriver
import time
from selenium.webdriver.common.keys import Keys
fp = webdriver.FirefoxProfile(r"C:\Users\86185\AppData\Roaming\Mozilla\Firefox\Profiles\yy63j5a3.default")
browser=webdriver.Firefox(fp)
browser.get('https://www.douyu.com/74751')#打开网页,url为网址
firefox版本,只不过driver变成browser。功能都一样。
PS:chrome70版本还能cookie和head
less同时使用。71版本添加cookie,headless就用不了。感觉headless很方便。如有大神知道如何解决此问题,请告诉我,不胜感激。
将url替换成小杰直播间网址就可以打开小杰直播间了。
可以看到发送窗口为:
只要定位到此处就能发弹幕。
selenium定位元素有很多种方式,这里用xpath
def send_dm(dm):
DM = str(dm)
try:
driver.find_element_by_xpath("//textarea[@class='ChatSend-txt ']").clear()
#清空输入框内容
driver.find_element_by_xpath("//textarea[@class='ChatSend-txt ']").send_keys(DM)
#输入弹幕内容
time.sleep(1)
driver.find_element_by_xpath("//textarea[@class='ChatSend-txt ']").send_keys(Keys.ENTER)
#敲回车
time.sleep(9)
except:
pass
@class='ChatSend-txt '这里的txt后面有空格,没空格定位不到。
你要不嫌麻烦,也可以定位到
用click()点击,可以代替回车。一般发一条弹幕系统会延时10秒不让发,所以延时10秒;
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driverOptions = webdriver.ChromeOptions()
driverOptions.add_argument(r"user-data-dir=C:\Users\86185\AppData\Local\Google\Chrome\User Data")
#利用cookie登录,只要把自己浏览器下的user data路径替换就行。
#driverOptions.add_argument('-headless')
#headless模式,70版本以前可以同时添加。
driver = webdriver.Chrome(options=driverOptions)
driver.get('https://www.douyu.com/74751')#打开网页,url为网址
def send_dm(dm):
DM = str(dm)
try:
driver.find_element_by_xpath("//textarea[@class='ChatSend-txt ']").clear()
#清空输入框内容
driver.find_element_by_xpath("//textarea[@class='ChatSend-txt ']").send_keys(DM)
#输入弹幕内容
time.sleep(1)
driver.find_element_by_xpath("//textarea[@class='ChatSend-txt ']").send_keys(Keys.ENTER)
#敲回车
time.sleep(9)
except:
pass
send_dm('你好')
就可以在超级卵杰直播间打出你好两字。