selenium模块

selenium模块为第三方模块需要安装,selenium模块是一个操作各种浏览器对应软件的api接口模块

selenium模块是一个操作各种浏览器对应软件的api接口模块,所以还得需要下载对应浏览器的操作软件

操作原理是:selenium模块操作浏览器操作软件,浏览器操作软件操作浏览器

Selenium 2.0适用于以下浏览器
  Google Chrome
  Internet Explorer 7, 8, 9, 10, 11
  Firefox
  Safari
  Opera
  HtmlUnit
  phantomjs
  Android
  iOS

Selenium 的核心,就是用js控制浏览器

下载对应浏览器的浏览器操作软件

Chrome: https://sites.google.com/a/chromium.org/chromedriver/downloads
Edge: https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/
Firefox: https://github.com/mozilla/geckodriver/releases
Safari: https://webkit.org/blog/6900/webdriver-support-in-safari-10/

我们这里以火狐浏览器为列

首先将火狐浏览器的操作软件,geckodriver.exe文件放置到爬虫目录里

selenium模块可以模拟用户行为操作各种版本浏览器

webdriver.Firefox('操作浏览器软件路径')实例化火狐浏览器对象
get('url')访问网站
find_element_by_xpath('xpath表达式')通过xpath表达式找对应元素
clear()清空输入框里的内容
send_keys('内容')将内容写入输入框
click()点击事件
get_screenshot_as_file('截图保存路径名称')将网页截图,保存到此目录
page_source获取网页htnl源码
browser.close() 关闭浏览器

#!/usr/bin/env python
# -*- coding:utf8 -*-
from selenium import webdriver  # 导入selenium模块来操作浏览器软件
import timebrowser = webdriver.Firefox(executable_path='H:/py/16/adc/adc/Firefox/geckodriver.exe')
browser.get('https://www.tmall.com/?spm=a220o.1000855.a2226mz.1.5c90c3484bZCx6')# 模拟用户操作
browser.find_element_by_xpath('//input[@id="mq"]').clear()                 # 通过xpath表达式找到输入框,clear()清空输入框里的内容
browser.find_element_by_xpath('//input[@id="mq"]').send_keys('连衣裙')     # 通过xpath表达式找到输入框,send_keys()将内容写入输入框
browser.find_element_by_xpath('//button[@type="submit"]').click()          # 通过xpath表达式找到搜索按钮,click()点击事件time.sleep(3)   # 等待3秒
browser.get_screenshot_as_file('H:/py/17/img/123.jpg')  # 将网页截图,保存到此目录neir = browser.page_source   # 获取网页内容
print(neir)browser.close()     # 关闭浏览器

利用scrapy的Selector方法。来过滤帅选数据

Selector()方法,过滤帅选数据,参数是得到的字符串html源码

#!/usr/bin/env python
# -*- coding:utf8 -*-
from selenium import webdriver  # 导入selenium模块来操作浏览器软件
import time
from scrapy.selector import Selectorbrowser = webdriver.Firefox(executable_path='H:/py/16/adc/adc/Firefox/geckodriver.exe')
browser.get('https://www.tmall.com/?spm=a220o.1000855.a2226mz.1.5c90c3484bZCx6')# 模拟用户操作
browser.find_element_by_xpath('//input[@id="mq"]').clear()                 # 通过xpath表达式找到输入框,clear()清空输入框里的内容
browser.find_element_by_xpath('//input[@id="mq"]').send_keys('连衣裙')     # 通过xpath表达式找到输入框,send_keys()将内容写入输入框
browser.find_element_by_xpath('//button[@type="submit"]').click()          # 通过xpath表达式找到搜索按钮,click()点击事件time.sleep(3)   # 等待3秒
browser.get_screenshot_as_file('H:/py/17/img/123.jpg')  # 将网页截图,保存到此目录neir = browser.page_source   # 获取网页内容
# print(neir)
gl_neir = Selector(text=neir)
dedao = gl_neir.css('title::text').extract()
print(dedao)browser.close()     # 关闭浏览器

selenium操作浏览器滚动滚动条

execute_script(js)方法,执行原生态js脚本

#!/usr/bin/env python
# -*- coding:utf8 -*-
from selenium import webdriver  # 导入selenium模块来操作浏览器软件
import time
from scrapy.selector import Selectorbrowser = webdriver.Firefox(executable_path='H:/py/16/adc/adc/Firefox/geckodriver.exe')
browser.get('https://www.oschina.net/blog')time.sleep(3)       # 等待3秒
for i in range(3):  # 滚动3次滚动条js = 'window.scrollTo(0,document.body.scrollHeight); var lenofpage=document.body.scrollHeight; return lenofpage'browser.execute_script(js)  # 执行js语言滚动滚动条time.sleep(3)neir = browser.page_source   # 获取网页内容
# print(neir)
gl_neir = Selector(text=neir)
dedao = gl_neir.css('title::text').extract()
print(dedao)# browser.close()     # 关闭浏览器

设置请求网页不加载图片,提高请求效率
ChromeOptions()方法,创建谷歌浏览器设置对象
Chrome()方法,创建谷歌浏览器对象

下面以谷歌浏览器为列

#!/usr/bin/env python
# -*- coding:utf8 -*-
from selenium import webdriver  # 导入selenium模块来操作浏览器软件
from scrapy.selector import Selector#设置请求网页不加载图片,提高请求效率
chrome_options = webdriver.ChromeOptions()                          #创建谷歌浏览器设置对象
prefs = {"profile.managed_default_content_settings.images": 2}      #设置谷歌浏览器不加载图片
chrome_options.add_experimental_option('prefs', prefs)              #将不加载图片添加到浏览器browser = webdriver.Chrome(executable_path='H:/py/16/adc/adc/Firefox/chromedriver.exe', chrome_options=chrome_options)
# browser.set_page_load_timeout(40) #设置页面最长加载时间为40s
browser.get('https://www.taobao.com/')neir = browser.page_source   # 获取网页内容
# print(neir)
gl_neir = Selector(text=neir)
dedao = gl_neir.css('title::text').extract()
print(dedao)# browser.close()     # 关闭浏览器

selenium模块还可以操作PhantomJS浏览器,PhantomJS是一个无界面浏览器,比较清爽,但是多线程是性能会下降

重点:我们推荐使用chromedriver.exe,谷歌浏览器

转载于:https://www.cnblogs.com/meng-wei-zhi/p/8182763.html

二十九 Python分布式爬虫打造搜索引擎Scrapy精讲—selenium模块是一个python操作浏览器软件的一个模块,可以实现js动态网页请求...相关推荐

  1. 第三百三十八节,Python分布式爬虫打造搜索引擎Scrapy精讲—深度优先与广度优先原理...

    第三百三十八节,Python分布式爬虫打造搜索引擎Scrapy精讲-深度优先与广度优先原理 网站树形结构 深度优先 是从左到右深度进行爬取的,以深度为准则从左到右的执行(递归方式实现)Scrapy默认 ...

  2. 第三百六十节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的基本概念...

    第三百六十节,Python分布式爬虫打造搜索引擎Scrapy精讲-elasticsearch(搜索引擎)的基本概念 elasticsearch的基本概念 1.集群:一个或者多个节点组织在一起 2.节点 ...

  3. 第三百四十五节,Python分布式爬虫打造搜索引擎Scrapy精讲—爬虫和反爬的对抗过程以及策略—scrapy架构源码分析图...

    第三百四十五节,Python分布式爬虫打造搜索引擎Scrapy精讲-爬虫和反爬的对抗过程以及策略-scrapy架构源码分析图 1.基本概念 2.反爬虫的目的 3.爬虫和反爬的对抗过程以及策略 scra ...

  4. 学习python-day02-25---转自Python分布式爬虫打造搜索引擎Scrapy精讲

    第三百六十九节,Python分布式爬虫打造搜索引擎Scrapy精讲-elasticsearch(搜索引擎)用Django实现搜索功能 Django实现搜索功能 1.在Django配置搜索结果页的路由映 ...

  5. 学习python-day02-24---转自Python分布式爬虫打造搜索引擎Scrapy精讲

    第三百六十八节,Python分布式爬虫打造搜索引擎Scrapy精讲-用Django实现搜索的自动补全功能 elasticsearch(搜索引擎)提供了自动补全接口 官方说明:https://www.e ...

  6. 第三百六十二节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)基本的索引和文档CRUD操作、增、删、改、查...

    第三百六十二节,Python分布式爬虫打造搜索引擎Scrapy精讲-elasticsearch(搜索引擎)基本的索引和文档CRUD操作.增.删.改.查 elasticsearch(搜索引擎)基本的索引 ...

  7. 三十七 Python分布式爬虫打造搜索引擎Scrapy精讲—将bloomfilter(布隆过滤器)集成到scrapy-redis中...

    Python分布式爬虫打造搜索引擎Scrapy精讲-将bloomfilter(布隆过滤器)集成到scrapy-redis中,判断URL是否重复 布隆过滤器(Bloom Filter)详解 基本概念 如 ...

  8. 三十五 Python分布式爬虫打造搜索引擎Scrapy精讲—scrapy分布式爬虫要点

    1.分布式爬虫原理 2.分布式爬虫优点 3.分布式爬虫需要解决的问题 转载于:https://www.cnblogs.com/meng-wei-zhi/p/8182813.html

  9. 学习python-day01-01---转自Python分布式爬虫打造搜索引擎Scrapy精讲

    第三百二十四节,web爬虫,scrapy模块介绍与使用 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 其可以应用在数据挖掘,信息处理或存储历史数据等一系列的程序中. 其最初是为 ...

  10. 学习python-day01-02---转自Python分布式爬虫打造搜索引擎Scrapy精讲

    第三百二十五节,web爬虫,scrapy模块标签选择器下载图片,以及正则匹配标签 标签选择器对象 HtmlXPathSelector()创建标签选择器对象,参数接收response回调的html对象 ...

最新文章

  1. 图像技术在上亿规模实拍图片中的应用(算法好文)
  2. 【C语言学习】《C Primer Plus》第5章 运算符、表达式和语句
  3. mysql 主主+ Keepalived 高可用
  4. 使用jieba 提取 关键词
  5. 二维gabor滤波器matlab,matlab中实现Gabor滤波器 | 学步园
  6. flink代码出现no instance(s) of type variable(s) T0, T1, T2 exist
  7. js笔记(五)文档对象模型DOM
  8. 云小课 | MRS和自建Hadoop相比,有哪些优势?
  9. mysql监控php脚本
  10. c 上传文件路劲为服务器路径,获取上传文件的路径变成C:\fakepath\
  11. 树莓派迅雷远程下载 | 树莓派小无相系列 1
  12. ThinkPhp6+Vue+ElementUI前后端分离在线教程
  13. HTML 全页面内容自由编辑与 HTML 页面全部黑白风格处理
  14. CPU卡读写操作函数
  15. 如何保证GIS图件中字体大小是所要求的
  16. Chatper 16 Instrumental Variable Estimation
  17. 水文预报 求各个年份的纳什效率系数
  18. 【FATE】==在Docker中部署FATE——单机版==
  19. 决策树(二)——决策树的生成
  20. Android耳机线控-播放/暂停/上一曲/下一曲

热门文章

  1. Revit二次开发: 文件损坏
  2. 【java基础】Eclipse Java注释模板设置详解以及版权声明
  3. 实验——基于文件验证和MYSQL验证的vsftpd虚拟用户
  4. zoj 1100 - Mondriaan#39;s Dream
  5. VMware VirtualBox共存时桥接注意
  6. 一步一步学Silverlight 2系列(15):数据与通信之ASMX
  7. [Code] 收集各种语言对图片的处理算法实现 图片模糊
  8. 敏捷开发之极限编程过程
  9. 楼道游戏 c语言,C语言基础题!
  10. 景德镇昌江一中2021年高考成绩查询,2021年景德镇中考分数线公布填报志愿时间及录取结果什么时候出...