【百度云搜寻,搜各种材料: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 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() # 敞开浏览器
selenium 操作浏览器滚动滚动条
execute_script(js)办法,执行原生态 js 脚本
#!/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() # 敞开浏览器
selenium 模块还能够操作 PhantomJS 浏览器,PhantomJS 是一个无界面浏览器,比拟清新,然而多线程是性能会降落
重点:咱们举荐应用 chromedriver.exe,谷歌浏览器