爬虫(九)selenium自动化应用、selenium+phantomjs的使用和headlesschrome

selenium:

selenium是python的一个第三方库,对外提供的接口可以操作用户的浏览器。

selenium的使用:

安装selenium库:pip install selenium

安装驱动:操作谷歌浏览器,首先必须有一个谷歌浏览器的驱动。

驱动安装网址:

http://chromedriver.storage.googleapis.com/index.html

驱动与浏览器的映射关系:

http://blog.csdn.net/huilan_same/article/details/51896672

# 创建自动驱动
browser = webdriver.Chrome(path)
# 使用驱动打开网页
browser.get()
# 使用驱动关闭网页
browser.quit()

1.id定位:find_element_by_id(self, id_)
2.name定位:find_element_by_name(self, name)
3.class定位:find_element_by_class_name(self, name)
4.tag定位:find_element_by_tag_name(self, name)
5.link定位:find_element_by_link_text(self, link_text)
6.partial_link定位find_element_by_partial_link_text(self, link_text)
7.xpath定位:find_element_by_xpath(self, xpath)
8.css定位:find_element_by_css_selector(self, css_selector)


9.id复数定位find_elements_by_id(self, id_)
10.name复数定位find_elements_by_name(self, name)
11.class复数定位find_elements_by_class_name(self, name)
12.tag复数定位find_elements_by_tag_name(self, name)
13.link复数定位find_elements_by_link_text(self, text)
14.partial_link复数定位find_elements_by_partial_link_text(self, link_text)
15.xpath复数定位find_elements_by_xpath(self, xpath)
16.css复数定位find_elements_by_css_selector(self, css_selector

下面是一个利用selenium自动驱动浏览器打开百度去搜索NBA图片并且点击图片的代码:

from selenium import webdriver
import time

# 模拟创建一个浏览器对象,然后通过对象去操作浏览器对象。
path = r'C:\Users\m1552\Desktop\chromedriver.exe'
browser = webdriver.Chrome(executable_path = path)
url = 'http://www.baidu.com/'
browser.get(url)

time.sleep(2)
# 查找input输入框
my_input = browser.find_element_by_id('kw')
# 往框里面写文字
my_input.send_keys("NBA图")

time.sleep(2)
# 查看搜索按钮
button = browser.find_element_by_class_name('s_btn')
button.click()

# 找到指定的标题
title = browser.find_elements_by_class_name("op-img-address-img")
print(title)

# title.click()
time.sleep(2)
# 关闭浏览器,退出浏览器
browser.quit()

phantomjs:

phantomjs是一款无界面的浏览器。

下面是一个利用selenium和phantomjs浏览豆瓣电影排名并向下拉获取全部内容的代码:

由于浏览器是无界面的所以采用截图的方式来查看页面内容。

from selenium import webdriver 
import time

# 创建浏览器对象
path = r'C:\Users\m1552\Desktop\phantomjs-2.1.1-windows\bin\phantomjs.exe'
browser = webdriver.PhantomJS(executable_path = path)

# url = 'http://www.baidu.com/'
# browser.get(url)

url = 'https://movie.douban.com/typerank?type_name=%E5%8A%A8%E4%BD%9C&type=5&interval_id=100:90&action='
browser.get(url)

time.sleep(2)
browser.save_screenshot(r'C:\Users\m1552\PycharmProjects\newWork\pa_chong\screenshot_pictures\douban.png')
time.sleep(2)

# # 让browser执行简单的JS代码,模拟滚动条滚动到底部
js = 'document.body.scrollTop=10000'
browser.execute_script(js)

time.sleep(3)
browser.save_screenshot(r'C:\Users\m1552\PycharmProjects\newWork\pa_chong\screenshot_pictures\douban2.png')
# time.sleep(2)

# 获取网页的源代码,保存到文件中
html = browser.page_source
# print(html)

with open(r'C:\Users\m1552\PycharmProjects\newWork\pa_chong\screenshot_pictures\jingdong.txt', 'w', encoding="utf8") as fp:
	fp.write(html)

browser.quit()

headlesschrome:是指用无界面的方式打开谷歌浏览器:

下面是一个应用的代码:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time

# 创建一个参数对象,用来控制chrome以无界面模式打开
chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--headless')

# 驱动路径
path = r'C:\Users\m1552\Desktop\chromedriver.exe'

# 创建浏览器对象
browser = webdriver.Chrome(executable_path = path, chrome_options = chrome_options)

# 上网
url = 'http://www.baidu.com'
browser.get(url)
time.sleep(2)

browser.save_screenshot(r'C:\Users\m1552\PycharmProjects\newWork\pa_chong\screenshot_pictures\baidu.png')

browser.quit()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值