使用selenium和phantomjs解决爬虫中对渲染页面的爬取

selenium+phantomjs,headerlesschrome

一.selenium+phantomjs

1.selenium是什么:是一个浏览器的自动化测试框架,通过selenium可以写代码,通过运行代码,可以让谷歌浏览器做自动化的工作。

实现:

1.安装:pip install selenium

演示:操作谷歌浏览器,其实操作的是谷歌浏览器的驱动,由驱动来驱动浏览器,既然这样,先下载驱动.(要下载对应版本的驱动)

谷歌驱动下载地址
http://chromedriver.storage.googleapis.com/index.html
浏览器的方法
http://blog.csdn.net/huilan_same/article/details/51896672
浏览器的方法
find_element_by_id   根据id查找指定的对象     
find_elements_by_name   根据name查找
find_elements_by_xpath   根据xpath查找 
find_elements_by_tag_name   根据标签名称进行查找
find_elements_by_class_name    根据类名进行查找
find_elements_by_css_selector  根据选择器进行查找
find_elements_by_link_text      根据a链接的内容进行查找

实例:

from selenium import webdriver    英[səˈli:niəm]

import time

#根据谷歌驱动,创建谷歌浏览器对象
path = r'C:\Users\Administrator\Downloads\chromedriver.exe'
browser = webdriver.Chrome(path)

#打开百度
firsturl = 'http://www.baidu.com/'
browser.get(firsturl)
time.sleep(2)
# 查找输入框
myinput = browser.find_element_by_id('kw')
#向框里面写内容
myinput.send_keys('周杰伦')
time.sleep(3)
#查找点击一下按钮
button =browser.find_element_by_id('su')
button.click()
time.sleep(5)

#查找周杰伦百度百科
#注意:按内容查找必须是a链接的完整文本内容才可以
baike=browser.find_elements_by_link_text('周杰伦_百度百科')[0]
baike.click()
time.sleep(5)

#退出浏览器
browser.quit()

2.phantomjs
phantomjs是什么,是一款浏览器,是无界面的浏览器,它的设计本质不是用来上网的,既然是浏览器,就有浏览器的功能。就可以解释html,css,js,在爬虫的过程中,经常会有这种反爬机制:html是动态加载的,因为js的dom操作,可以动态的给网页添加和删除内容,遇到DOM,如何解决:

(1)捕获接口,从接口解析数据.

(2)通过phantomjs爬取(大招)(效率不高).

专业图片网站:防盗链(meizitu)
还有一种反爬机制:懒加载技术

真正上网的时候,会遇到滚动条加载,这种网站信息难以捕获

可以通过phantomjs模拟滚动条滚动到底部

from selenium import webdriver
import time

# 找到phantomjs路径
path = r'E:\phantomjs\phantomjs-2.1.1-windows\bin\phantomjs.exe'2.1.1-windows\bin\phantomjs.exe'
# 创建浏览器对象
browser = webdriver.PhantomJS(path)

browser.get('http://www.baidu.com/')
time.sleep(2)
# 拍照片的方式
browser.save_screenshot(r'phantomjs\baidu1.png')

# 往下要执行的操作,就是走一步拍一步的过程
browser.find_element_by_id('kw').send_keys('美女')
browser.find_element_by_id('su').click()

time.sleep(2)
browser.save_screenshot(r'phantomjs\baidu2.png')

browser.quit()

滚动到底部

from selenium import webdriver
import time

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值