第三百五十节,Python分布式爬虫打造搜索引擎Scrapy精讲—selenium模块是一个python操作浏览器软件的一个模块,可以实现js动态网页请求
2017-08-24 20:26
1261 查看
第三百五十节,Python分布式爬虫打造搜索引擎Scrapy精讲—selenium模块是一个python操作浏览器软件的一个模块,可以实现js动态网页请求
[b]selenium模块[/b]
[b][b]selenium模块为第三方模块需要安装,[b]selenium模块是一个操作各种浏览器对应软件的api接口模块[/b][/b][/b]
[b][b][b][b][b][b][b]selenium模块是一个操作各种浏览器对应软件的api接口模块,所以还得需要下载对应浏览器的操作软件[/b][/b][/b][/b][/b][/b][/b]
[b][b][b][b][b][b][b]操作原理是:[b][b]selenium模块操作浏览器操作软件,[b][b][b][b][b][b][b][b][b][b]浏览器操作软件操作浏览器[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]
Selenium 2.0适用于以下浏览器
Google Chrome
Internet Explorer 7, 8, 9, 10, 11
Firefox
Safari
Opera
HtmlUnit
phantomjs
Android
iOS
Selenium 的核心,就是用js控制浏览器
[b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b]下载对应浏览器的[b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b]浏览器操作软件[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]
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() 关闭浏览器
利用scrapy的Selector方法。来过滤帅选数据
Selector()方法,过滤帅选数据,参数是得到的字符串html源码
[b]selenium操作浏览器滚动滚动条[/b]
[b]execute_script(js)[/b][b]方法,执行原生态js脚本[/b]
设置请求网页不加载图片,提高请求效率
ChromeOptions()方法,创建谷歌浏览器设置对象
Chrome()方法,创建谷歌浏览器对象
下面以谷歌浏览器为列
[b][b]selenium模块还可以操作[/b]PhantomJS浏览器,PhantomJS是一个无界面浏览器,比较清爽,但是多线程是性能会下降[/b]
[b]重点:我们推荐使用chromedriver.exe,谷歌浏览器[/b]
[b]selenium模块[/b]
[b][b]selenium模块为第三方模块需要安装,[b]selenium模块是一个操作各种浏览器对应软件的api接口模块[/b][/b][/b]
[b][b][b][b][b][b][b]selenium模块是一个操作各种浏览器对应软件的api接口模块,所以还得需要下载对应浏览器的操作软件[/b][/b][/b][/b][/b][/b][/b]
[b][b][b][b][b][b][b]操作原理是:[b][b]selenium模块操作浏览器操作软件,[b][b][b][b][b][b][b][b][b][b]浏览器操作软件操作浏览器[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]
Selenium 2.0适用于以下浏览器
Google Chrome
Internet Explorer 7, 8, 9, 10, 11
Firefox
Safari
Opera
HtmlUnit
phantomjs
Android
iOS
Selenium 的核心,就是用js控制浏览器
[b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b]下载对应浏览器的[b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b]浏览器操作软件[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]
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 time browser = 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 Selector browser = 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() # 关闭浏览器
[b]selenium操作浏览器滚动滚动条[/b]
[b]execute_script(js)[/b][b]方法,执行原生态js脚本[/b]
#!/usr/bin/env python # -*- coding:utf8 -*- from selenium import webdriver # 导入selenium模块来操作浏览器软件 import time from scrapy.selector import Selector browser = 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() # 关闭浏览器
[b][b]selenium模块还可以操作[/b]PhantomJS浏览器,PhantomJS是一个无界面浏览器,比较清爽,但是多线程是性能会下降[/b]
[b]重点:我们推荐使用chromedriver.exe,谷歌浏览器[/b]
相关文章推荐
- 第三百五十一节,Python分布式爬虫打造搜索引擎Scrapy精讲—将selenium操作谷歌浏览器集成到scrapy中
- 第三百六十九节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现搜索功能
- 第三百七十一节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现我的搜索以及热门搜索
- python分布式爬虫打造搜索引擎--------scrapy实现
- 第三百七十节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现搜索结果分页
- 第三百六十二节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)基本的索引和文档CRUD操作、增、删、改、查
- 第三百四十七节,Python分布式爬虫打造搜索引擎Scrapy精讲—通过downloadmiddleware中间件全局随机更换user-agent浏览器用户代理
- 第三百六十三节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的mget和bulk批量操作
- 第三百六十八节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现搜索的自动补全功能
- 第三百五十四节,Python分布式爬虫打造搜索引擎Scrapy精讲—数据收集(Stats Collection)
- Python分布式爬虫打造搜索引擎Scrapy
- 第三百四十八节,Python分布式爬虫打造搜索引擎Scrapy精讲—通过自定义中间件全局随机更换代理IP
- 第三百五十九节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)介绍以及安装
- 第三百五十八节,Python分布式爬虫打造搜索引擎Scrapy精讲—将bloomfilter(布隆过滤器)集成到scrapy-redis中
- 第三百五十二节,Python分布式爬虫打造搜索引擎Scrapy精讲—chrome谷歌浏览器无界面运行、scrapy-splash、splinter
- 第三百三十八节,Python分布式爬虫打造搜索引擎Scrapy精讲—深度优先与广度优先原理
- 第三百四十一节,Python分布式爬虫打造搜索引擎Scrapy精讲—编写spiders爬虫文件循环抓取内容—meta属性返回指定值给回调函数—Scrapy内置图片下载器
- 第三百四十二节,Python分布式爬虫打造搜索引擎Scrapy精讲—爬虫数据保存
- 第三百四十五节,Python分布式爬虫打造搜索引擎Scrapy精讲—爬虫和反爬的对抗过程以及策略—scrapy架构源码分析图