使用se模拟
声明:只用来学习交流,原创不易,转载请声明!!!
总结:
使用selenium模拟操作相对来说会比较耗时,但是可以获取网站的动态加载的数据,并且可以不用去找评论信息的包在哪里,还可以绕过网站的一些加密算法。还是一种比较好的方法。但在爬取过程中要注意评论信息加载出来需要时间加载,所以需要在点击操作中sleep20秒左右,防止爬取到空数据。
- 第一步首先能够科学上网,懂得都懂
- 在爬取过程中,网站会识别你是否处于登录状态,所以在进行模拟爬取的时候使用cookie来进行模拟登录,以免在爬取过程中跳转到登录页面,这时你需要一个谷歌账号,谷歌账号上淘宝即可,方便快捷。
driver.get(url) #闯入YouTube视频地址
# 首先清除由于浏览器打开已有的cookies
driver.delete_all_cookies()
with open('cookie.txt', 'r') as f:
# 使用json读取cookies 注意读取的是文件 所以用load而不是loads
cookies_list = json.load(f)
# 方法1 将expiry类型变为int
for cookie in cookies_list:
if 'sameSite' in cookie:
cookie['sameSite'] = 'None'
driver.add_cookie(cookie)
driver.refresh()
temp_height = 0
driver.execute_script("window.scrollBy(0,900)")
sleep(20)
3.在使用selenium时可以模拟登录网站进行自动化操作,所以我设想的是用selenium模拟鼠标一直向下滑动,一直滑动到评论的最低部,把评论全部都动态的加载出来,然后在使用selenium来进行获取数据
while True:
# 循环将滚动条下拉
driver.execute_script("window.scrollBy(0,500)")
# sleep一下让滚动条反应一下
sleep(5)
# 获取当前滚动条距离顶部的距离
check_height = driver.execute_script(
"return document.documentElement.scrollTop || window.pageYOffset || document