Python网页测试库selenium,动态网页抓取
2017-10-11 23:53
459 查看
selenium是自动化网页测试工具,它支持各种浏览器,包括 Chrome,Safari,Firefox 等主流界面式浏览器,使用selenium需要浏览器版本与selenium版本匹配,同时配合浏览器驱动便可实现Web界面的测试,也就是 selenium 支持这些浏览器驱动。
首先,在命令行窗口安装selenium库:pip install selenium,
通过命令:pip show selenium查看selenium版本;
然后,查找安装对应版本的浏览器;
接下来,下载一个浏览器驱动,比如google用chromedriver,firefox用geckodriver;
最后,把geckodriver的位置加入环境变量PATH中。
我用的配置是win7系统下Python3.5.2:
selenium3.6.0,firefox54.0,geckodriver-v0.14.0-win64,
D:\PYTHON35\idle\selenium
firefox各版本下载地址:http://ftp.mozilla.org/pub/firefox/releases/
(不要更新firefox版本,更新版本就不对应了!)
通过以下命令,可以利用firefox开启百度网页:
下述针对动态页面,模拟页面下拉:
下面会针对“如何判断页面下拉完毕”,显示全部要查找的类型的元素进行设计:
首先,在命令行窗口安装selenium库:pip install selenium,
通过命令:pip show selenium查看selenium版本;
然后,查找安装对应版本的浏览器;
接下来,下载一个浏览器驱动,比如google用chromedriver,firefox用geckodriver;
最后,把geckodriver的位置加入环境变量PATH中。
我用的配置是win7系统下Python3.5.2:
selenium3.6.0,firefox54.0,geckodriver-v0.14.0-win64,
D:\PYTHON35\idle\selenium
firefox各版本下载地址:http://ftp.mozilla.org/pub/firefox/releases/
(不要更新firefox版本,更新版本就不对应了!)
通过以下命令,可以利用firefox开启百度网页:
import time from selenium import webdriver driver=webdriver.Firefox(executable_path=r'D:\PYTHON35\idle\selenium\geckodriver') #创建firefox的驱动 driver.maximize_window() #避免移动版布局和网页版布局窗口影响CSS定位抓取 driver.get('https://www.baidu.com/') #time.sleep(5) #网页停留5秒 driver.quit()
下述针对动态页面,模拟页面下拉:
import time from selenium import webdriver driver=webdriver.Firefox(executable_path=r'D:\PYTHON35\idle\selenium\geckodriver') #创建firefox的驱动 driver.maximize_window() #避免移动版布局和网页版布局窗口影响CSS定位抓取 driver.get('http://www.balmain.com/en_cn/men/new-arrivals.html') driver.execute_script('window.scrollBy(0, document.body.scrollHeight);') #execute_script利用javascript模拟动态网页页面下拉
下面会针对“如何判断页面下拉完毕”,显示全部要查找的类型的元素进行设计:
import time from selenium import webdriver driver=webdriver.Firefox(executable_path=r'D:\PYTHON35\idle\selenium\geckodriver') #创建firefox的驱动 driver.maximize_window() #避免移动版布局和网页版布局窗口影响CSS定位抓取 #此处,可以设置查找元素时超时问题,异常检测driver.implicity_wait(5),超过5秒报异常 ###为了防止等待抓取超时报错,可以类似的设置打开页面异常检测,这里直接忽略异常继续往下抓取,页面上重要元素几乎都拿到了### try: driver.get('http://www.balmain.com/en_cn/men/new-arrivals.html') except: pass elements=[] #为了判断是否页面下拉完毕,显示了全部页面元素 count=-1 ###while语句条件,下拉刷新判断关键条件,可以参照页面html源码对照看有多少个元素a### while len(elements) > count: count = len(elements) #记录当前找到多少元素 driver.execute_script('window.scrollBy(0, document.body.scrollHeight);') #找到元素后,做页面下拉刷新 #execute_script利用javascript模拟动态网页页面下拉,scrollBy参数是0表示从0开始下拉,可以修改成任意高度 time.sleep(2) elements=driver.find_elements_by_css_selector('div.products-list > div > a') #元素a定位,find_elements_by_css_selector里elements表示找所有满足条件的元素,element表示找一个满足条件的元素 for element in elements: ###此处可以嵌套查找elements里的元素element.find_XXX_by_css_selector(元素)### print(element.get_attribute('href')) #selenium里的get_attribute类似bs4里的get driver.quit()
相关文章推荐
- python+selenium+PhantomJS抓取ajax动态网页数据
- Python使用Selenium + PhantomJS抓取动态网页:今日头条
- python爬虫selenium+firefox抓取动态网页--表情包爬虫实战
- 小猪的Python学习之旅 —— 5.使用Selenium抓取JavaScript动态生成数据的网页
- 使用Python+selenium+BeautifulSoup抓取动态网页的关键信息
- Python抓取网页动态数据——selenium webdriver的使用
- Chrome + Python 抓取动态网页内容
- python 抓取动态网页的问题
- 使用python抓取js动态加载的网页
- 动态网页抓取Selenium的安装与使用
- [Python爬虫]Scrapy配合Selenium和PhantomJS爬取动态网页
- selenium+webdriver爬取动态网页介绍_python
- python+Selenium2+chrome构建动态网页爬虫工具
- python抓取网页中的动态数据
- 如何用Python去实现抓取静态网页+抓取动态网页+模拟登陆网站
- 【转】详解抓取网站,模拟登陆,抓取动态网页的原理和实现(Python,C#等)
- python项目之 抓取动态网页 抓取路由器客户
- 如何用Python,C#等语言去实现抓取静态网页+抓取动态网页+模拟登陆网站