python3 [爬虫入门实战]爬虫之selenium 安装设置与初步使用

总结:过程还是可以的,成就感还是稍微有些的。耗时一个上午

准备:

selenium 相对应的可执行文件的下载与安装
这里写图片描述

解压放在:
这里写图片描述

就是这两部,如果官网慢的话,可以去csdn上进行下载 。

下面是python代码中的模块

导包模块:

# encoding=utf8
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
from bs4 import BeautifulSoup

在selenium中得到网页信息的主要是:

we_data = driver.page_source # 一定要有,因为要抓很多页数

数据都在we_data里面了

评论文本的re,要有\n 上次已经吃亏过一次了。

reg2 = r'"comment-text">.*?<p>(.*?)\n</p>'# 评论的文本所在区域

下面看具体代码:运行环境pycharm2017,py35,

# encoding=utf8
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
from bs4 import BeautifulSoup

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

# 之前用的Chrome 会默认打开Chrome,需要把下载的chromedriver.exe 放在python的文件路径下
driver = webdriver.PhantomJS()
# browser = webdriver.Chrome()
# browser.get('https://www.baidu.com/')

# 调用get方法
driver.get('http://v.youku.com/v_show/id_XMTgxODg5NzM0MA==.htm')
# 进入网页
driver.execute_script("window.scrollBy(0,3000)")    # 这是下拉操作,进入网页后悔自己滚动到页面下面,这样评论才会加载出来

time.sleep(3) # 睡眠
driver.execute_script("window.scrollBy(0,5000)") # 下拉操作,具体下拉得看自己的屏幕
time.sleep(3)

#这里搞了我很久,一直找不到评论的所在,查了很久文档,对先抓大后抓先深感为然,不然你直接匹配评论内容是找不到的,这个是先匹配到最新评论的div,找到所有评论的框架先,这样动态数据才能加载出来,如图,所有最新评论都在一个class=commens的div中,为了剔除第一页的最热评论,又折腾了好久...
# data = driver.find_element_by_class_name('comment-list-body')
data = driver.find_element_by_id('videoCommentlist')

we_data = driver.page_source # 一定要有,因为要抓很多页数
# print(we_data)
print(data)

reg = r'"comment-list-main comment-list-box">(.*?)\n</div>'# 最新评论所在的区域

reg2 = r'"comment-text">.*?<p>(.*?)\n</p>'# 评论的文本所在区域

comments1 = str(re.findall(reg,we_data,re.S))
print('comments1 '+comments1)

# 第一页数据包含热门数据供40条(其中热门数据10,最新数据30)
comments2 = re.findall(reg2,we_data,re.S) # 匹配文字内容
print('comments2 '+str(comments2))
for i in comments2:
    print('coment'+str(i))
# 把找到的文字评论内容添加进去
all_comments.extend(comments2)
print(len(comments2))

# 接下来是重复这个步骤就好了。不然要添加一句click(),让selenium模拟人工点击第二页,然后复制以上抓取第二页评论就好了

# 第二页数据(只有三十条)
time.sleep(2)
# 直接在浏览器中复制的
driver.find_element_by_xpath('//*[@id="videoCommentlist"]/div[4]/div/ul[1]/li[2]/a').click()
time.sleep(2)
driver.execute_script("window.scrollBy(0,2000)")
time.sleep(3)
driver.execute_script("window.scrollBy(0,4000)")
time.sleep(3)
data = driver.find_element_by_id('videoCommentlist')

we_data = driver.page_source # 一定要有,因为要抓很多页数
# print(we_data)
print(data)

reg = r'"comment-list-main comment-list-box">(.*?)\n</div>'# 最新评论所在的区域

reg2 = r'"comment-text">.*?<p>(.*?)\n</p>'# 评论的文本所在区域

comments1 = str(re.findall(reg,we_data,re.S))
print('comments3 '+comments1)

comments2 = re.findall(reg2,we_data,re.S) # 匹配文字内容
print('comments4 '+str(comments2))
for i in comments2:
    print('coment'+str(i))
print(len(comments2))

以上代码是爬取了两页内容,如果需要下一页的需要找到id,然后调用click()方法就可以

爬取结果

这里写图片描述

初次使用:竟然不用cookie,头文件信息之类的,懵逼了已经

代码量不是很多,但是注释里面很清楚,都在里面,以后可以进行扩展。

下次进行好友qq空间说说or留言的爬取。采用selenium工具

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值