【百度云搜寻,搜各种材料:http://www.lqkweb.com】
【搜网盘,搜各种材料:http://www.swpan.cn】

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/ch...
Edge: https://developer.microsoft.c...
Firefox: https://github.com/mozilla/ge...
Safari: https://webkit.org/blog/6900/...

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

首先将火狐浏览器的操作软件,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 timefrom 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 timefrom 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) #设置页面最长加载工夫为40sbrowser.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,谷歌浏览器