爬虫之Selenium

简介

selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决requests无法直接执行JavaScript代码的问题 selenium本质是通过驱动浏览器,完全模拟浏览器的操作,比如跳转、输入、点击、下拉等,来拿到网页渲染之后的结果,可支持多种浏览器

作用: 可以让浏览器完成相关自动化的操作

和爬虫的关联:

  • 模拟登陆
  • 可以获取动态加载的页面数据

编码流程:

  • 导包
  • 实例化浏览器对象(驱动)
  • 制定相关自动化的行为动作

环境安装

  • 下载安装selenium:pip install selenium
  • 下载浏览器驱动程序:
    • http://chromedriver.storage.googleapis.com/index.html
  • 查看驱动和浏览器版本的映射关系:
    • http://blog.csdn.net/huilan_same/article/details/51896672

简单使用/效果展示

01:

复制代码
复制代码
from selenium import webdriver
from time import sleep
bro = webdriver.Chrome(executable_path='./chromedriver.exe')  
bro.get('https://www.baidu.com')    #获取的连接页面
sleep(2)
#标签定位
tag_input = bro.find_element_by_id('kw')
tag_input.send_keys('人民币')   #标签中输入值
sleep(2)

btn = bro.find_element_by_id('su')   
btn.click()  #标签点击事件
sleep(2)

bro.quit()  #退出
复制代码
复制代码

02.

复制代码
复制代码
from selenium import webdriver
from time import sleep
bro = webdriver.Chrome(executable_path='./chromedriver.exe')

bro.get('https://xueqiu.com/')
sleep(5)

#执行js实现滚轮向下滑动
js = 'window.scrollTo(0,document.body.scrollHeight)'    #两个参数一个是X轴,一个是y轴,此时用的是Y轴
bro.execute_script(js)
sleep(2)
bro.execute_script(js)
sleep(2)
bro.execute_script(js)
sleep(2)
bro.execute_script(js)
sleep(2)

a_tag = bro.find_element_by_xpath('//*[@id="app"]/div[3]/div/div[1]/div[2]/div[2]/a')
a_tag.click()
sleep(5)
#获取当前浏览器页面数据(动态)
print(bro.page_source)    

bro.quit()
复制代码
复制代码

 

PhantomJs及谷歌无头浏览器无可视化:

#PhantomJs是一款无可视化界面的浏览器(免安装)

from selenium import webdriver

from time import sleep

bro = webdriver.PhantomJS(executable_path=r'C:\Users\Administrator\Desktop\爬虫+数据\爬虫day03\phantomjs-2.1.1-windows\bin\phantomjs.exe')

 

bro.get('https://xueqiu.com/')

sleep(2)

bro.save_screenshot('./1.png')

#执行js实现滚轮向下滑动

js = 'window.scrollTo(0,document.body.scrollHeight)'

bro.execute_script(js)

sleep(2)

bro.execute_script(js)

sleep(2)

bro.execute_script(js)

sleep(2)

bro.execute_script(js)

sleep(2)

bro.save_screenshot('./2.png')

# a_tag = bro.find_element_by_xpath('//*[@id="app"]/div[3]/div/div[1]/div[2]/div[2]/a')

# bro.save_screenshot('./2.png')

# a_tag.click()

sleep(2)

#获取当前浏览器页面数据(动态)

print(bro.page_source)

 

bro.quit()

 

现在用的很少,知道即可 



from selenium import webdriver from time import sleep from selenium.webdriver.chrome.options import Options # 创建一个参数对象,用来控制chrome以无界面模式打开 chrome_options = Options() chrome_options.add_argument('--headless') chrome_options.add_argument('--disable-gpu') bro = webdriver.Chrome(executable_path='./chromedriver.exe',options=chrome_options) bro.get('https://www.baidu.com') sleep(2) bro.save_screenshot('1.png') #标签定位 tag_input = bro.find_element_by_id('kw') tag_input.send_keys('人民币') sleep(2) btn = bro.find_element_by_id('su') btn.click() sleep(2) print(bro.page_source) bro.quit() 谷歌无头浏览器

 

posted @ 2019-05-27 22:25  Python张梦书  阅读(179)  评论(0编辑  收藏  举报