一、selenium是什么?

selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决requests无法执行javaScript代码的问题。

二、为什么要用selenium?

 selenium可以驱动浏览器自动执行自定义好的逻辑代码,也就是可以通过代码完全模拟成人类使用浏览器自动访问目标站点并操作,那我们也可以拿它来做爬虫。

 selenium本质上是通过驱动浏览器,完全模拟浏览器的操作,比如跳转、输入、点击、下拉等...进而拿到网页渲染之后的结果,可支持多种浏览器。

 那么对于爬虫来说,用它有没有好处?有,好处就是可以帮我们避开一系列复杂的通信流程,例如在我们之前学习的requests模块,那么requests模块在模拟请求的时候是不是需要把素有的通信流程都分析完成后才能通过请求,然后返回响应。假如目标站点有一系列复杂的通信流程,例如的登录时的滑动验证等...那么你使用requests模块的时候是不是就特别麻烦了。不过你也不需要担心,因为网站的反爬策略越高,那么用户的体验效果就越差,所以网站都需要在用户的淫威之下降低安全策略。

 再看一点requests请求库能不能执行js?是不是不能呀!那么如果你的网站需要发送ajax请求,异步获取数据渲染到页面上,是不是就需要使用js发送请求了。那浏览器的特点是什么?是不是可以直接访问目标站点,然后获取对方的数据,从而渲染到页面上。那这些就是使用selenium的好处!
  
 那用它有没有坏处?使用selenium本质上是驱动浏览器对目标站点发送请求,那浏览器在访问目标站点的时候,是不是都需要把静态资源都加载完毕。html、css、js这些文件是不是都要等待它加载完成。是不是速度特别慢。那用它的坏处就是效率极低!所以我们一般用它来做登录验证。

from selenium import webdriverfrom selenium.webdriver.common.keys import Keys
import timedriver = webdriver.Chrome()try:driver.implicitly_wait(10)driver.get('https://www.jd.com/')input_tag = driver.find_element_by_id('key')input_tag.send_keys('哈利波特')input_tag.send_keys(Keys.ENTER)time.sleep(10)except Exception as e:print(e)finally:driver.close()

from selenium import webdriver
# 导入键盘Keys
from selenium.webdriver.common.keys import Keys
import timedriver = webdriver.Chrome()# 检测代码块
try:# 隐式等待,等待标签加载driver.implicitly_wait(10)# 往京东主页发送请求driver.get('https://www.jd.com/')# 通过id查找input输入框input_tag = driver.find_element_by_id('key')# send_keys为当前标签传值input_tag.send_keys('中华字典')# 按键盘的回车键
    input_tag.send_keys(Keys.ENTER)time.sleep(3)'''爬取京东商品信息:公仔名称url价格评价'''# element 找一个# elements 找多个# 查找所有的商品列表good_list = driver.find_elements_by_class_name('gl-item')# print(good_list)# 循环遍历每一个商品for good in good_list:# 通过属性选择器查找商品详情页url# urlgood_url = good.find_element_by_css_selector('.p-img a').get_attribute('href')print(good_url)# 名称good_name = good.find_element_by_css_selector('.p-name em').textprint(good_name)# 价格good_price = good.find_element_by_class_name('p-price').textprint(good_price)# 评价数good_commit = good.find_element_by_class_name('p-commit').textprint(good_commit)str1 = f'''url: {good_url}名称: {good_name}价格: {good_price}评价: {good_commit}\n'''# 把商品信息写入文本中with open('jd.txt', 'a', encoding='utf-8') as f:f.write(str1)time.sleep(10)# 捕获异常
except Exception as e:print(e)# 最后都会把驱动浏览器关闭掉
finally:driver.close()

转载于:https://www.cnblogs.com/uki123/p/11105016.html

day 05 python基础相关推荐

  1. 超全面Python基础入门教程【十天课程】博客笔记汇总表

    目录 1.学习地址 2.下载地址[视频.源码.课件.软件] 3.详细博客笔记 Day 01 Day 02 Day 03 Day 04 Day 05 Day 06 Day 07 Day 08 Day 0 ...

  2. python基础05

    python基础05 昨日内容回顾及作业讲解 列表:增  append  insert  extend 删 remove pop clear del 改  li[索引] = '被修改的内容'  li ...

  3. 【Python3零基础入门笔记】05 Python时间处理——time库的使用

    time库的使用: time库基本情况 时间获取 时间格式化 程序计时 文本进度条实例 time库基本情况 Time库是python中处理时间的标准库 计算机时间表达 提供获取系统时间并格式化输出功能 ...

  4. python基础代码事例-零基础学习Python开发练习100题实例(2)

    零基础学习Python开发练习100题实例(2) 2018-02-26 13:11:39 1934浏览 11.题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个 ...

  5. python的用途实例-Python基础之函数原理与应用实例详解

    本文实例讲述了Python基础之函数原理与应用.分享给大家供大家参考,具体如下: 目标 函数的快速体验 函数的基本使用 函数的参数 函数的返回值 函数的嵌套调用 在模块中定义函数 01. 函数的快速体 ...

  6. 七月在线python数据分析_七月在线Python基础+数据分析班+爬虫项目

    资源介绍 七月在线Python基础+数据分析班+爬虫项目 目录 ├─Python基础入门班2017年 ││代码.rar │└─视频 │xa0 xa0 01.第1课 入门基础.rar │xa0 xa0 ...

  7. 【Python基础】GitHub 星标 8.8w+,Python 小白 100 天学习计划,从新手到大师!

    本篇给大家介绍一个Python骨灰级别的学习项目. 2019年10月份的时候,一个<Python-100-days>的GitHub项目火了,霸榜GitHub热榜.此项目截止目前已经8.8万 ...

  8. ​【Python基础】告别枯燥,60 秒学会一个 Python 小例子(文末下载)

    本文推荐一个python的傻瓜式的学习资源,内容简单易懂,让人可以在60 秒学会一个 Python 小例子 当前库已有 300多 个实用的小例子 本文来源:https://github.com/jac ...

  9. 【Python基础】Python 100 例带你入门

    文章来源于Python与算法社区,作者振哥 大家好,我是振哥.这是我总结的 Python 100 个样例,原创作品,请大家多多关照. 以下所有代码全都至少运行一遍,确保可复现.易于理解.逐步完成入门到 ...

最新文章

  1. layui时间怎么设置年月日时分秒_layui-laydate时间日历控件使用方法详解
  2. Ubuntu20.04 安装qq和微信
  3. 3. 回归的线性模型(2)
  4. Vue.js 列表渲染
  5. 通过C++ Interop把Windows窗体集成到MFC应用程序中
  6. JVM(2)——JVM类加载机制
  7. speex在stm32f407单片机上的移植
  8. Java 多线程(二)—— 线程的同步
  9. android wear中国版,AndroidWear中国版App——小白上手指南
  10. Shell awk 求标准差
  11. Mysql中的delimiter详解
  12. 三相PWM整流器(simulink仿真搭建)
  13. 深度学习服务器?深度了解一下!
  14. 全球各大网站的服务器使用什么操作系统和WEB服务器(转)
  15. java fop_java – 未找到类FOP
  16. 809-Expressive Words
  17. PLL Simulink行为模型
  18. MySQL异构同步_详解MySQL数据库异构数据同步
  19. EF 之 System.InvalidOperationException
  20. Oracle IN 与 DISTINCT

热门文章

  1. 监控Linux服务器网站状态的SHELL脚本
  2. java中file类_Java中file类
  3. onpaste事件不生效_从实际开发中来看JavaScript事件循环的使用场景
  4. java投票锁_Java并发编程锁之独占公平锁与非公平锁比较
  5. 论文翻译_做论文翻译需要知道哪些翻译技巧?知行翻译:这3个技巧
  6. 计算机仿真实验用的教学软件是,AR增强现实教学软件,学习效果倍增
  7. mysql 第一天_MySQL第一天
  8. python编写赛车游戏单机版_使用Keras和DDPG玩赛车游戏(自动驾驶)
  9. 坐标系转换(镜像与对换)
  10. 双时隙的工作原理_工业内窥镜的原理是什么?有哪些测量方法