Selenium 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera,Edge等。这个工具的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创建回归测试检验软件功能和用户需求。支持自动录制动作和自动生成 .Net、Java、Perl等不同语言的测试脚本。

1、安装Python3.5或以上版本

打开https://www.python.org/

Win:根据你的Windows版本(64位还是32位)从Python的官方网站下载Python,运行下载的exe安装包。特别要注意勾上Add Python 3.X to PATH,然后点“Install Now”即可完成安装。

Mac:  系统自带的Python版本是2.X,从Python官网下载Python 3.X的安装程序,下载后双击运行并安装会替换掉2.X;

2、安装selenium

Win:pip install selenium

Mac:  pip3 install selenium

3、安装webdriver

推荐Chrome,http://chromedriver.storage.googleapis.com/index.html

webdriver浏览器版本对应

Webdriver版本    支持的Chrome版本
v2.41 v67-69
v2.40 v66-68
v2.39 v66-68
v2.38 v65-67
v2.37 v64-66
v2.36 v63-65
v2.35 v62-64
v2.34 v61-63
v2.33 v60-62

Win:复制webdriver到Python安装目录下

Mac:复制webdriver到/usr/local/bin目录下

4.运行

启动Chrome浏览器:

from selenium import webdriver

browser = webdriver.Chrome()
browser.get('http://www.baidu.com/')

 5.实践,根据课程列表,抓取每节课介绍详情

# -*- coding: utf-8 -*-
from selenium import webdriver #调用 Chrome 浏览器
from selenium.webdriver.common.keys import Keys #调用键盘按键操作需要引入keys 包
from selenium.webdriver.common.action_chains import ActionChains #鼠标事件
from selenium.webdriver.support import expected_conditions as EC #expected_conditions判断当前页面的是否有XX。由于这个模块名称比较长,所以为了后续的调用方便,重新命名为EC了
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait #显性等待,程序每隔xx秒看一眼,如果条件成立了,则执行下一步,否则继续等待,直到超过设置的最长时间
import os,time browser = webdriver.Chrome() #打开谷歌
browser.implicitly_wait(30) # 隐性等待,最长等30秒
browser.get("https://www.beijingfundtown.com/cloud-class/course") #输入地址
#'''判断是否至少有1个元素存在于dom树中,如果定位到就返回列表'''
instance = WebDriverWait(browser,10).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR,'.cur-left-con')))
# browser.minimize_window() #将浏览器最小化显示
opt = webdriver.ChromeOptions() # 创建Chrome参数对象
opt.headless = True # 把Chrome设置成可视化无界面模式,windows/Linux 皆可
# for循环enumerate()(单词意思是枚举的意思)是python中的内置函数
for i, ins in enumerate(instance):
try:
href = ins.find_element_by_tag_name('a').get_property('href')
# ins.click()
b = webdriver.Chrome(options=opt) #把Chrome设置成可视化无界面模式
b.get(href)
time.sleep(1)
print(b.find_element_by_id("desc").text)
b.quit()
except Exception as e:
print(str(e)+str(i))
time.sleep(1)
#browser.maximize_window() # 浏览器全屏显示 time.sleep(1)
browser.quit()

Python+Selenium模拟人工抓取数据的更多相关文章

  1. Python开发爬虫之动态网页抓取篇:爬取博客评论数据——通过Selenium模拟浏览器抓取

    区别于上篇动态网页抓取,这里介绍另一种方法,即使用浏览器渲染引擎.直接用浏览器在显示网页时解析 HTML.应用 CSS 样式并执行 JavaScript 的语句. 这个方法在爬虫过程中会打开一个浏览器 ...

  2. 使用selenium模拟浏览器抓取淘宝信息

    通过Selenium模拟浏览器抓取淘宝商品美食信息,并存储到MongoDB数据库中. from selenium import webdriver from selenium.common.excep ...

  3. php中CURL技术模拟登陆抓取数据实战,抓取某校教务处学生成绩。

    这两天有基友要php中curl抓取教务处成绩的源码,用于微信公众平台的开发.下面笔者只好忍痛割爱了.php中CURL技术模拟登陆抓取数据实战,抓取沈阳工学院教务处学生成绩. 首先,教务处登录需要验证码 ...

  4. Selenium模拟浏览器抓取淘宝美食信息

    前言: 无意中在网上发现了静觅大神(崔老师),又无意中发现自己硬盘里有静觅大神录制的视频,于是乎看了其中一个,可以说是非常牛逼了,让我这个用urllib,requests用了那么久的小白,体会到sel ...

  5. [Python爬虫] 之三:Selenium 调用IEDriverServer 抓取数据

    接着上一遍,在用Selenium+phantomjs 抓取数据过程中发现,有时候抓取不到,所以又测试了用Selenium+浏览器驱动的方式:具体代码如下: #coding=utf-8import os ...

  6. C# WebBrowser控件 模拟登录 抓取数据

    参考博客:C#中的WebBrowser控件的使用 参考博客:C#中利用WebBrowser控件,获得HTML源码 一.问题点: 1.模拟登录后,如果带有嵌套的iframe嵌套,不好读取iframe内容 ...

  7. python抓取数据,python使用socks代理抓取数据

    在python中,正常的抓取数据直接使用urllib2 这个模块: import urllib2 url = 'http://fanyi.baidu.com/' stream = urllib2.ur ...

  8. Python爬虫学习==>第十二章:使用 Selenium 模拟浏览器抓取淘宝商品美食信息

    学习目的: selenium目前版本已经到了3代目,你想加薪,就跟面试官扯这个,你赢了,工资就到位了,加上一个脚本的应用,结局你懂的 正式步骤 需求背景:抓取淘宝美食 Step1:流程分析 搜索关键字 ...

  9. Python selenium自动化网页抓取器

    (开开心心每一天~ ---虫瘾师) 直接入正题---Python selenium自动控制浏览器对网页的数据进行抓取,其中包含按钮点击.跳转页面.搜索框的输入.页面的价值数据存储.mongodb自动i ...

  10. python的post请求抓取数据

    python通过get方式,post方式发送http请求和接收http响应-urllib urllib2 python通过get方式,post方式发送http请求和接收http响应-- import  ...

随机推荐

  1. 1. 什么是three.js?

    Three.js是一个基于JavaScript编写的开源3D图形库,它使用WebGL技术在网页上渲染3D图形.Three.js提供了许多高级功能,如几何体.纹理.光照.阴影等,以便开发者能够快速地创建 ...

  2. Centos7下非lvm的分区扩容

    Centos7下非lvm的分区扩容(重要) 前言:一般在生产环境中,如果需要使用一个分区保存大量的文件,建议的做法是在虚拟化环境中增加一块单独的硬盘,挂载一个单独的分区,比如 /data 上图我们可以 ...

  3. 在vue中引入外部的css文件

    在vue中引入外部的css文件在项目的src文件下,新建一个style文件夹,存放css文件. 1. 全局引入将外部的css文件放到style文件下,引入外部文件只需在main.js文件中 impor ...

  4. CentOS环境下OpenSSH9.8p1升级实践

    安装Telnet服务 为了避免升级OpenSSH导致服务器不可连接.需要先下载安装Telnet组件.升级期间使用Telnet作为升级期间的服务器连接方式. 先查询telnet是否安装 rpm -qa ...

  5. 体验国产系统Deepin:很爽

    最近开始把之前一直吃亏的旧电脑拿出来再利用了,先还是选择了熟悉的ubuntu系列.安装了Ubuntu 22.04之后,风风火火地把需要的开发环境搭建起来,虽然桌面有些卡顿,但瑕不掩瑜玉.趁着热情又想着 ...

  6. 关于MNN的OPENCL和Vulkan支持

    关于MNN框架推理的时候,通过调用库当中结构体的内容,可以切换选择创建Session的具体配置.关于结构的描述见官方文档: 官方文档--创建Session CPU是编译的时候默认选择的配置方式,通过文 ...

  7. 接口测试中Groovy引擎的接入实现!

    接口测试中Groovy可以作为上下游接口参数化传递的前置脚本和后置脚本使用,无缝衔接Java语法,groovy的引入对于动态参数化的设置方便很多. 其中核心部分就是接入groovy的引擎,下面介绍gr ...

  8. P5987 [PA2019] Terytoria / 2023NOIP A层联测13 T3 全球覆盖

    P5987 [PA2019] Terytoria / 2023NOIP A层联测13 T3 全球覆盖 题面及数据范围 对于一个点对,可以降维为线段,转化为 1 维的问题. 如图: 我们可以在横着的方向 ...

  9. 域渗透之初识Kerberos认证过程

    目录 Kerberos协议中的角色 关键名词 Kerberos协议的工作流程 AS_REQ & AS_REP TGS_REQ & TGS_REP AP_REQ PAC 总结 Kerbe ...

  10. context之WithTimeout的使用

    1. context包的WithTimeout()函数接受一个 Context 和超时时间作为参数,返回其子Context和取消函数cancel2. 新创建协程中传入子Context做参数,且需监控子 ...