python3爬虫(8)--动态渲染页面使用Selenium库模拟浏览器抓取数据

在使用Ajax采集数据时,有些Ajax接口含有很多的加密参数,直接很难发现规律。此时,就可以使用模拟浏览器运行的方式来采集。Python 提供了许多模拟浏览器运行的库,如Selenium、Splash、PyV8、Ghost等。

一、模拟浏览器爬取数据Selenium的使用。

1.1、安装准备工作

安装selenium库:pip install selenium

(1)、谷歌(Chrome)浏览器需要ChromeDriver 驱动的安装与配置

  • 查看浏览器版本号:点击Chrome右上角的菜单->帮助->关于Google Chrome即可查看,我这里的版本版本 79.0.3945.130
  • ChromeDriver下载:https://chromedriver.storage.googleapis.com/index.html
  • 下载对应版本及对应系统:chromedriver_win32.zip
  • 环境变量配置:这里是windows系统我们直接解压后将chromedriver.exe文件拖到Python(anaconda)的Scripts目录下。
  • cmd窗口测试:cmd-->chromedriver,输出Starting ChromeDriver ...on port ...,则安装配置成功。
  • 代码测试: 执行下列代码,会弹出一个空白的Chrome浏览器
  • from selenium import webdriver
    browser=webdriver.Chrome()

(2)、火狐(Firefor)浏览器需要GeckoDriver的安装与配置

  • 下载地址:https://github.com/mozilla/geckodriver/releases
  • 下载对应版本:如:geckodriver-v0.26.0-win64.zip
  • 环境配置:windows系统直接解压拖到Python(anaconda)的Scripts目录下。
  • cmd窗口测试:cmd-->geckodriver,输出...geckodriver...,则安装配置成功。
  • 代码测试: 执行下列代码,会弹出一个空白的Firefor浏览器
  • from selenium import webdriver
    browser=webdriver.Firefox()

1.2、声明浏览器对象

  • from selenium import webdriver  #导入库
  • browser =webdriver. Chrome()   #谷歌浏览器的声明及初始化
  • browser =webdriver. Firefox()    #火狐浏览器的声明及初始化
  • browser =webdriver. Edge()       #Edge浏览器的声明及初始化
  • browser =webdriver. PhantomJS() #无界面浏览器PhantomJS的声明及初始化
  • browser =webdriver. Safari()     #Safari浏览器的声明及初始化
  • ......

完成浏览器对象的初始化并将其赋值为browser对象。调用browser对象,让其执行各个动作以模拟浏览器操作。

1.3、访问页面,get()方法

from selenium import webdriver
browser=webdriver.Chrome()
browser.get('https://www.taobao.com/') #访问网页
url= browser.current_url
print(url) #获取url
cookies = browser.get_cookies()
print(type(cookies),cookies) #获取cookies,格式:<class 'list'>
SC = browser.page_source
print(type(SC),SC) #获取源代码,格式:<class 'str'>

1.4、查找节点

单个节点:

获取单个节点:方法 说明:返回WebElement类型 示例:
get() 请求访问页面 from selenium import webdriver
browser=webdriver.Chrome()
browser.get('https://www.taobao.com/')
find_element_by_id 根据id属性的值获取节点 input_01=browser.find_element_by_id('q') #定位到淘宝的搜索框
find_element_by_name 根据name属性值获取节点 input_02=browser.find_element_by_name('q') 
find_element_by_class_name 根据class属性值获取节点 input_03=browser.find_element_by_class_name('search-combobox-input-wrap')
find_element_by_xpath 根据Xpath选择器定位 input_04=browser.find_element_by_xpath('//*[@id="q"]')
find_element_by_css_selector
  • 7
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值