爬虫---handless Chrome和selenium+phantomjs

1、selenium+phantomjs

selenium是什麽?

是一个浏览器自动化测试工具,自动化就是通过代码操作浏览器,让浏览器自动的做一些操作,是python的第三方库,需要安装才能使用

pip install selenium

谷歌驱动下载地址

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

驱动和浏览器版本关系映射表

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

selenium 操作谷歌浏览器

需要有一个谷歌浏览器的驱动,然后操作这个驱动

from selenium import webdriver
import time

# 根据webdriver里面的类去创建一个谷歌浏览器对象
path = r'C:\Users\ZBLi\Desktop\1805\day06\ziliao\chromedriver.exe'
browser = webdriver.Chrome(path)

# 再往下,操作浏览器就是操作对象
# 打开百度
url = 'http://www.baidu.com/'
browser.get(url)
time.sleep(2)

# 查找百度输入框
my_input = browser.find_element_by_id('kw')
# 写内容
my_input.send_keys('清纯美女')
time.sleep(2)

# 查找按钮框
button = browser.find_element_by_id('su')
button.click()

time.sleep(3)

# 查找阳光美女链接
href = browser.find_elements_by_xpath('//div[@class="op-img-covers-divide-high"][2]/a[2]')[0]
href.click()
time.sleep(3)

# 推出浏览器
browser.quit()

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 根据链接内容查找

作用在哪?

让selenium操作的是phantomjs

phantomjs是什麽?

就是一款浏览器,无界面的浏览器,具有浏览器的功能,html\css\js这些文件浏览器可以直接执行。
我们关注的就是phantomjs可以执行js文件的功能,在爬取网站的时候,经常碰见动态加载数据的过程。js DOM,解决方法两种

(1)抓接口,拿出来接口发送请求,解析即可
(2)让浏览器直接执行js,然后我要执行js之后的网页代码,selenium+phantomjs,终极解决方案,大招,缺点:发请求之后要有停顿

操作phantomjs

from selenium import webdriver
import time

path = r'C:\Users\ZBLi\Desktop\1805\day06\ziliao\phantomjs-2.1.1-windows\bin\phantomjs.exe'
browser = webdriver.PhantomJS(path)

browser.get('http://www.baidu.com/')
time.sleep(3)

# 拍照片,记录走到哪了
browser.save_screenshot(r'tupian\baidu1.png')

browser.find_element_by_id('kw').send_keys('美女')
time.sleep(2)
browser.find_element_by_id('su').click()
time.sleep(3)

browser.save_screenshot(r'tupian\baidu2.png')

browser.quit()

代码中模拟滚动条滚动到底部

js = 'document.body.scrollTop=10000'
browser.execute_script(js)

from selenium import webdriver
import time

path = r'C:\Users\ZBLi\Desktop\1805\day06\ziliao\phantomjs-2.1.1-windows\bin\phantomjs.exe'
browser = webdriver.PhantomJS(path)

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(3)
browser.save_screenshot(r'tupian\douban1.png')

# 执行一句js代码即可
# for x in range(1, 6):
#   js = 'document.body.scrollTop=10000'
#   browser.execute_script(js)
#   time.sleep(3)
#   browser.save_screenshot(r'tupian\douban2.png')

js = 'document.body.scrollTop=10000'
browser.execute_script(js)
time.sleep(3)

# 获取执行js之后的网页代码
with open(r'tupian\douban.html', 'w', encoding='utf8') as fp:
    fp.write(browser.page_source)

# 往下就可以通过bs或者xpath来解析网页内容了

# 模拟点击加载更多,就是通过browser找到那个按钮,让按钮执行click方法即可

browser.quit()

获取页面的执行js之后的代码

    browser.page_source

2、Headless Chrome

是什麽?
无头的谷歌浏览器-无界面的谷歌浏览器,phantomjs现在已经没人维护了,

要求:windows(60+以上)、linux(59+以上)

from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
from selenium import webdriver

import time

from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')

path = r'C:\Users\ZBLi\Desktop\1805\day06\ziliao\chromedriver.exe'
browser = webdriver.Chrome(executable_path=path, chrome_options=chrome_options)

browser.get('http://www.baidu.com/')
time.sleep(2)

browser.save_screenshot(r'tupian\baidu3.png')

browser.quit()
  • 当然:不仅谷歌有无界面模式,火狐也有,ie也有,phantomjs

你可能感兴趣的:(爬虫---handless Chrome和selenium+phantomjs)