利用selenium和PhantomJS爬取优酷视频动态最新评论数据

目前正在学python爬虫,在网易上了很多课程,静态网页爬了许多,现在在极客学院学爬取动态网页数据,第一次用selenium,折腾好好几天,这里分享一下第一次独立实战(当然过程中百度以及看简友的心德无数次了),让各位同志以后别走我踩过的坑,以下是代码,我都做了清晰的注释

from selenium import webdriver
import re

from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
import  time


import os


all_comments=[]先建一个空列表,用于接受爬取的文字


driver = webdriver.PhantomJS()这里我之前用的是chrome,调试好了换成了PhantomJs,速度快了一点
如果用chrome,要把下载的chromedriver.exe放在python的文件路径下,
如图,放好就可以直接用,我的chrome是最新版本的,没问题,没用网上说的旧版本,



利用selenium和PhantomJS爬取优酷视频动态最新评论数据_第1张图片
YIJMB7X~{D8G~JA2_ZS32{O.png

driver.get('http://v.youku.com/v_show/id_XMTgxODg5NzM0MA==.htm')调用get方法,
进入网页
driver.execute_script("window.scrollBy(0,3000)")这是下拉操作,进入网页后会自己滚动到页面下面,
这样评论才能加载出来
time.sleep(3)python也挺累,还是让他休息一下吧
driver.execute_script("window.scrollBy(0,5000)")具体下拉多少,要看自己的屏幕吧这个
time.sleep(3)

data= driver.find_element_by_class_name('comments')
这里搞了我很久,一直找不到评论的所在,查了很久文档,对先抓大后抓先深感为然,
不然你直接匹配评论内容是找不到的,这个是先匹配到最新评论的div,
找到所有评论的框架先,这样动态数据才能加载出来,如图,所有最新评论都在一个class=commens的div中,
为了剔除第一页的最热评论,又折腾了好久...
利用selenium和PhantomJS爬取优酷视频动态最新评论数据_第2张图片
Paste_Image.png

time.sleep(3)
we_data=driver.page_source这句话一定要有,不然第一页的评论就抓不出来,因为要抓多页,
所以要给第一页抓到的页面赋一个变量

tr1 = r'
'此正则找到最新评论所在的区域,别问为啥还要再找一次, 刚刚不是用find_element找了一次吗,其实我也希望大神告诉我,上面那句为何那么关键...... tr2 = r'

(.*?)' tr2 = r'

(.*?)

利用selenium和PhantomJS爬取优酷视频动态最新评论数据_第3张图片
Paste_Image.png

爬取的结果如图所示

利用selenium和PhantomJS爬取优酷视频动态最新评论数据_第4张图片
Paste_Image.png

里面一些评论有链接的,应该是某某回复谁谁的,这个坑以后再填吧,现在的功力不行啊,哪位大神会的也可以指点一下我,有点累,那个字符串后面的\xa0还没清理,不过应该也不难,最后感谢一下
简友韩大熊宝要姓张,最后又什么问题可以联系我啊,QQ810833835,目前正在努力学pyhthon爬虫,打算转行,路漫漫其修远兮啊

你可能感兴趣的:(利用selenium和PhantomJS爬取优酷视频动态最新评论数据)