Python爬虫基础之 Selenium

这篇具有很好参考价值的文章主要介绍了Python爬虫基础之 Selenium。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

三、Selenium

1.初识Selenium

1.1什么是Selenium?

Selenium是一个浏览器自动化测试框架,是一款用于Web应用程序测试的工具。框架底层使用JavaScript模拟真实用户对浏览器进行操作。测试脚本执行时,浏览器自动按照脚本代码做出点击,输入,打开,验证等操作,就像真实用户所做的一样,从终端用户的角度测试应用程序。使浏览器兼容性测试自动化成为可能,尽管在不同的浏览器上依然有细微的差别。使用简单,可使用Java,Python等多种语言编写用例脚本。

1.2 Selenium的准备

以Chrome为例:

首先在pycharm中安装selenium软件包,版本不要太高,不然会闪退,测试是3.5版本。(补:后续更新到selenium3.10运行无影响)

然后http://chromedriver.storage.googleapis.com/index.html网站中找到对应版本的chromedriver下载win32就可以了,解压之后复制粘贴到项目文件夹的一级目录下。

Python爬虫基础之 Selenium,Python爬虫基础,python,爬虫,selenium

准备工作完成。

2. Selenium的使用

2.1为什么要使用Selenium

先看下面一段代码

import urllib.request

url = 'https://www.jd.com'

response = urllib.requst.urlopen(url)

content = response.read().decode('utf-8')

print(content)

在控制台搜索J_seckill(京东秒杀模块的id),无匹配字段,原因是:模拟浏览器获取不了京东秒杀的内容,因为网站检测到了是模拟浏览器,所以需要用selenium。

2.2 Selenium的基本使用

selenium的使用会调用chrome,所以当弹出页面后需要在设置中将默认搜索引擎改成百度。

获取京东网站中的京东秒杀源码

# 导入selenium
from selenium import webdriver

# 创建浏览器对象
path = 'chromedriver.exe'
browser = webdriver.Chrome(path)

# 访问网站
url = 'https://www.jd.com'

browser.get(url)

# page_source获取网页源码
content = browser.page_source
print(content)

在控制台搜索J_seckill可以看到京东秒杀模块。

2.3 Selenium的元素定位

from selenium import webdriver

url = 'https://www.jd.com'

path = 'chromedriver.exe'
browser = webdriver.Chrome(path)

# 元素定位
# 根据id找到对象
id = browser.find_element_by_id('su')
print(id)
# 根据标签属性的属性值
name = browser.find_element_by_name('wd')
print(name)
# 根据xpath语句来获取对象
xpath = browser.find_element_by_xpath('//input[@id="su"]')
print(xpath)
# 根据标签的名字获取对象
button = browser.find_element_by_tag_name('input')
print(button)
# 使用bs4的语法获取对象
bs = browser.find_element_by_css_selector('#su')
print(bs)
# a标签
text = browser.find_element_by_link_text('新闻')
print(text)

2.4 Selenium获取元素信息

以百度首页为例

from selenium import webdriver

path = 'chromedriver.exe'
browser = webdriver.Chrome(path)

url = 'http://www.baidu.com'
browser.get(url)	# 访问网站

# 根据id内容获取标签对象
input = browser.find_element_by_id('su')	

# 获取标签的属性
print(input.get_attribute('class'))

# 获取标签的名字
print(input.tag_name)

# 获取元素文本
a = browser.find_element_by_link_text('新闻')
print(a.text)

2.5 Selenium的交互

模拟点击行为,进而操作浏览器

from selenium import webdriver

# 创建浏览器对象
path = 'chromedriver.exe'
browser = webdriver.Chrome(path)

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

import time
# 睡眠两秒	防止操作过快被检测出来时爬虫,被封ip
time.sleep(2)

# 获取文本框的对象
input = browser.find_element_by_id('kw')

# 在文本框中输入周杰伦
input.send_keys('周杰伦')

time.sleep(2)

# 获取百度一下的按钮
button = browser.find_element_by_id('su')

# 点击按钮
button.click()

time.sleep(2)

# 滑到底部
js_bottom = 'document.documentElement.scrollTop=100000'
browser.execute_script(js.bottom)

time.sleep(2)

# 获取下一页的按钮
next = browser.find_element_by_xpath('//a[@class="n"]')

# 点击下一页
next.click()

time.sleep(2)

# 回到上一页
browser.back()

time.sleep(2)

# 再回去
browser.forward()

time.sleep(3)

browser.quit()

Phantomjs

1.初识Phantomjs

1.1什么是Phantomjs

Phantomjs是一个无界面浏览器,支持页面元素查找,js的执行等,由于不进行css和gui渲染,运行效率比真实的浏览器快的多。

1.2如何使用Phantomjs

和使用Chrome类似,

即获取PhantomJs.exe的文件路径,

browser = webdriver.PhantomJs(path)

browser.get(url)

可以使用屏幕快照进行验证浏览器是否正常运行。

2. Phantomjs的使用

以百度搜索关键词为例

from selenium import webdriver

url = 'https://www.baidu.com'

path = 'phantomjs.exe'

browser = webdriver.PhantomJS(path)

browser.get(url)

browser.save_screenshot('baidu.png')	# 保存快照

import time

# 获取百度搜索的搜索文本框
input = browser.find_element_by_id('kw')	
input.send_keys('昆凌')	# 输入关键字‘昆凌’

time.sleep(2) # 睡眠两秒

browser.save_screenshot('kunling.png')

注:(1)phantonmjs因为某些原因已经停止更新,所以新版本的selenium不支持phantomjs,这里使用的是selenium3.5.0

所以现在都是使用handless

(2)当selenium更新到3.10时,输出窗口会出现“ UserWarning: Selenium support for PhantomJS has been deprecated, please use headless versions of Chrome or Firefox instead warnings.warn('Selenium support for PhantomJS has been deprecated, please use headless ’ ” 警告,不过不影响运行结果。

Chrome handless

1.初识Chrome handless

1.1什么是Chrome handless

Chrome-headless 模式, Google 针对 Chrome 浏览器 59版 新增加的一种模式,可以让你不打开UI界面的情况下 使用 Chrome 浏览器,所以运行效果与 Chrome 保持完美一致。

1.2使用需求

(1).系统要求:

Chrome

​ Unix\Linux 系统需要 chrome >= 59

​ Windows 系统需要 chrome >= 60

Python3.6

​ Selenium==3.4.*

​ ChromeDriver==2.31

(2).配置:

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

chrome_options = Options() 

chrome_options.add_argument('‐‐headless') 

chrome_options.add_argument('‐‐disable‐gpu') 

path = r'C:\Program Files (x86)\Google\Chrome\Application\chrome.exe' 

chrome_options.binary_location = path 

browser = webdriver.Chrome(chrome_options=chrome_options) 

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

2. Chrome handless的使用

# 无界面的浏览器调用方法
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

# 封装的handless
def share_browser():
    chrome_options = Options()
    chrome_options.add_argument('--headless')
    chrome_options.add_argument('--disable-gpu')
	chrome_options.add_argument('--window-size=1920,1080')  # 设置窗口的大小
    
    driver = webdriver.Chrome(options=chrome_options)

    # path 是Chrome浏览器的文件路径
    path = r'C:\Program Files\Google\Chrome\Application\chrome.exe'

    chrome_options.binary_location = path

    browser = webdriver.Chrome(chrome_options=chrome_options)

    return browser

browser = share_browser()

url = 'https://www.baidu.com'

browser.get(url)

browser.save_screenshot('百度.png')

注:未解决的问题:无界面浏览器还是出现了界面(现已解决,原因是selenium版本太低,需更新到3.10)文章来源地址https://www.toymoban.com/news/detail-817046.html

到了这里,关于Python爬虫基础之 Selenium的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python爬虫之selenium的基础使用

    一.本文背景及概要 笔者在Python爬虫的学习过程中接触selenium,惊觉此包的强大之处,便对学习的知识做个记录,方便日后需要时查看,同时也和读者分享。文中表述如有错误,敬请指正,感激不尽。 本文主要是对selenium的概要和一些基础的用法。特此说明:笔者学习的资料中

    2024年02月07日
    浏览(30)
  • 【Python爬虫开发基础⑩】selenium概述

    🚀 个人主页 :为梦而生~ 关注我一起学习吧! 💡 专栏 :python网络爬虫从基础到实战 欢迎订阅!后面的内容会越来越有意思~ 💡 往期推荐 : ⭐️前面比较重要的 基础内容 : 【Python爬虫开发基础⑥】计算机网络基础(Web和HTTP) 【Python爬虫开发基础⑦】urllib库的基本使用

    2024年02月12日
    浏览(35)
  • 【Python爬虫】Python爬虫三大基础模块(urllib & BS4 & Selenium)

    参考资料 Python爬虫教程(从入门到精通) Python urllib | 菜鸟教程 Beautiful Soup 4 入门手册_w3cschool Selenium入门指南 Selenium教程 什么是 Scrapy|极客教程 Scrapy入门教程 1、网络爬虫是什么? 我们所熟悉的一系列 搜索引擎都是大型的网络爬虫 ,比如百度、搜狗、360浏览器、谷歌搜索等

    2024年02月12日
    浏览(35)
  • Python爬虫基础(三):使用Selenium动态加载网页

    Python爬虫基础(一):urllib库的使用详解 Python爬虫基础(二):使用xpath与jsonpath解析爬取的数据 Python爬虫基础(三):使用Selenium动态加载网页 Python爬虫基础(四):使用更方便的requests库 Python爬虫基础(五):使用scrapy框架 (1)Selenium是一个用于Web应用程序测试的工具。

    2024年02月06日
    浏览(42)
  • 一天掌握python爬虫【基础篇】 涵盖 requests、beautifulsoup、selenium

    大家好,我是python222小锋老师。前段时间卷了一套  Python3零基础7天入门实战  以及1小时掌握Python操作Mysql数据库之pymysql模块技术 近日锋哥又卷了一波课程,python爬虫【基础篇】 涵盖 requests、beautifulsoup、selenium,文字版+视频版。1天掌握。 视频版教程:一天掌握python爬虫【

    2024年02月07日
    浏览(34)
  • python spider 爬虫 之 Selenium 系列 (-) Selenium

    京东的 seckill 秒杀 专区 用 urllib 是获取不到的 回顾一下urllib 爬虫 Selenium Selenium定义 Selenium是一个用于Web应用程序测试的工具 Selenium测试 直接 运行在浏览器中,就像真实的用户在操作一样 支持通过各种driver ( FireFoxDriver, InternetExplorerDriver、OperaDriver、ChromeDriver)驱动真实浏

    2024年02月16日
    浏览(31)
  • Python爬虫之用Selenium做爬虫

    我们在用python做爬虫的时候,除了直接用requests的架构,还有Scrapy、Selenium等方式可以使用,那么今天我们就来聊一聊使用Selenium如何实现爬虫。 Selenium是什么? Selenium是一个浏览器自动化测试框架,是一款用于Web应用程序测试的工具。框架底层使用JavaScript模拟真实用户对浏览

    2024年02月13日
    浏览(28)
  • python爬虫-Selenium

    Selenium是一个用于Web应用程序测试的工具,Selenium 测试直接运行在浏览器中,就像真正的用户在操作一样。模拟浏览器功能,自动执行网页中的js代码,实现动态加载。 打开谷歌浏览器--右上角三个点--帮助--关于 下载地址:http://chromedriver.storage.googleapis.com/index.html 找到对应浏

    2024年02月09日
    浏览(28)
  • python selenium 爬虫教程

    Python和Selenium是很强大的爬虫工具,可以用于自动化地模拟浏览器行为,从网页中提取数据。下面是一个简单的使用Python和Selenium进行爬虫的案例。 1. 安装和配置: 首先,你需要安装Python和Selenium。可以使用pip命令来安装Selenium库: pip install selenium 。 然后,你还需要下载对应

    2024年02月09日
    浏览(32)
  • python爬虫(selenium)

    目录 准备 体验示例 创建浏览器驱动对象 访问页面 查找节点 节点交互 切换Frame 延时等待 前进和后退 Cookies 选项卡管理 准备 (1)浏览器驱动 :http://chromedriver.storage.googleapis.com/index.html (2)selenium第三方库 :pip install selenium 注意: 浏览器驱动需要根据自身浏览器版本去下

    2024年02月03日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包