一、安装selenium

基于Window操作系统

1.selenium库的安装

(需要先安装python3,这里就不详细说明)

  • 可在cmd上运行pip install selenium
  • 也可在pycharm工程目录下添加selenium库

2.下载对应的浏览器驱动

各大浏览器webdriver地址可参见:https://docs.seleniumhq.org/download/

浏览器 webdriver地址
Firefox https://github.com/mozilla/geckodriver/releases/
Chrome https://sites.google.com/a/chromium.org/chromedriver/ 或者 http://chromedriver.storage.googleapis.com/index.html
IE http://selenium-release.storage.googleapis.com/index.html

3.webdriver的安装路径

  • (1)将下载解压后驱动文件放到python安装路径
    (若不知安装路径,可用where python命令查询)
  • (2)也可放到pycharm工程中的venv->Scripts中

(本人配置的是python3,
浏览器:火狐66.03(最新)
驱动:geckodriver-v0.24.0-win64.zip)

二、selenium的简单操作

天天基金网址: http://fund.eastmoney.com/

1. 基于firefox浏览器驱动打开天天基金网站;

待页面“基金排行”出现后,点击“基金排行”,进入排行页面。

from selenium import webdriverd = webdriver.Firefox()  #打开浏览器
d.get('http://fund.eastmoney.com/') #进入网页# #点击基金排行
d.find_element_by_xpath("//li[@class='ph']/a").click()  #通过xpath元素定位
# click()方法模仿人工点击

为什么xpath是 “//li[@class=‘ph’]/a”
让我们来分析一下

关于xpath的学习可参考 (转)python+selenium基础之XPATH定位(第一篇)

2. 进入排行页面后,在基金搜索框输入:00,并在弹出的下拉框中选择第四条基金,点击进入基金详情页面。

d.switch_to.window(d.window_handles[1])  #切换句柄到当前页面
d.find_element_by_xpath("//input[@id='search-input']").clear()
d.find_element_by_xpath("//input[@id='search-input']").send_keys("00") #send_keys("00")模仿人工输入
# d.refresh()  #刷新页面
time.sleep(3)
#click()点击下拉菜单第四条信息
d.find_element_by_xpath("//tr[@data-submenu='590008']/td[@class='seaCol2']").click()

3.获取基金详情页面红框内容,并存入mysql数据库

d.switch_to.window(d.window_handles[2])
#获取网页内容,并
bs = BeautifulSoup(d.page_source,'html.parser')
# 创建一个列表,将数据存储进去
InfoList = []
#获取基金代码
code = bs.find("span",{"class":"ui-num"}).text
# 获取基本基金信息
div = bs.find('div',{'class':'fundInfoItem'})
InfoList.append(code) # 将基金代码添加到列表中
dls = div.find_all('dl')
for dl in dls:dds = dl.find_all('dd')for i,dd in enumerate(dds):# print(dd)"""dd 的内容如下:dd[0]  <dd class="dataNums"><dl class="floatleft">...... id="gz_gszzl">+0.15%</span></dl></dd>dd[1]  <dd><span>近1月:</span><span class="ui-font-middle ui-color-green ui-num">-4.45%</span></dd>dd[2]  <dd><span>近1年:</span><span class="ui-font-middle ui-color-green ui-num">-4.76%</span></dd>因为只有二、三才是我们所需的数据"""if i == 1:span = dd.find_all('span')[1].stringInfoList.append(span)if i == 2:span = dd.find_all('span')[1].stringInfoList.append(span)conn = pymysql.connect(host = 'localhost',user = 'root',password = '123456',port = 3306,db = 'mystudy',charset = 'utf8') # 数据库的连接
cursor = conn.cursor() # 创建游标
tablename = 'seleniumGetNews'
#数据存储操作
try:insertSql = "insert into {} values (%s,%s,%s,%s,%s,%s,%s)".format(tablename) #mysql语句cursor.execute(insertSql,InfoList)
except pymysql.err.ProgrammingError:#如果表不存在则创建。createSql = "create table {}(" \"基金代码 varchar(100) primary key ," \"近一月 varchar(100)," \"近一年 varchar(100)," \"近三月 varchar(100)," \"近三年 varchar(100)," \"近六月 varchar(100)," \"成立来 varchar(100))" \"ENGINE = InnoDB DEFAULT  CHARSET =utf8;".format(tablename)cursor.execute(createSql)cursor.execute(insertSql,InfoList)
conn.commit() #提交命令
cursor.close() #关闭游标
conn.close()  #关闭连接

4.将页面切换回首页(句柄切换)

d.switch_to.window(d.window_handles[0]) #关于页面句柄,在第三点的问题有提及
d.refresh() #刷新页面

三、遇到的问题

1. 从主窗口A跳转至主窗口B后,无法定位窗口B的元素的问题

原因:当启动脚本后,从页面A打开页面B后,窗口句柄(焦点)依旧停留在主页面A,所以无法定位页面B的元素,报错无当前元素,当跳转页面时。

当我们打印句柄,输出的是列表,其中各代表各自的页面。
解决方法:将窗口句柄(焦点)切换到当前页面

d.switch_to.window(d.window_handles[1])

【小白】利用selenium+python爬取天天基金网--模拟人工查询基金信息相关推荐

  1. 完全小白篇-使用Python爬取网络小说

    完全小白篇-使用Python爬取网络小说 一.找一个你要爬取的小说 二.分析网页 网页的展示方式 需要用到的库文件 三.向网站发送请求 四.正则提取 五.跳转的逻辑 六.后续处理 七.保存信息进入do ...

  2. 完全小白篇-用python爬取豆瓣电影影评

    完全小白篇-用python爬取豆瓣影评 打开豆瓣电影 随机电影的所有影评网页 跳转逻辑 分析影评内容获取方法 逐一正则提取影评 针对标签格式过于多样的处理 针对提出请求的频率的限制 存储方式(本次sq ...

  3. python爬取boss直聘招聘信息_年底啦,利用Python爬取Boss直聘的招聘信息,为明年跳槽做准备...

    原标题:年底啦,利用Python爬取Boss直聘的招聘信息,为明年跳槽做准备 前言 为什么都说程序员的薪资高,但是刚开始入职的你,薪资并不是自己想象中的那样,首先是你的工作经验不足,其次就是需要不断的 ...

  4. python爬取并分析淘宝商品信息

    python爬取并分析淘宝商品信息 背景介绍 一.模拟登陆 二.爬取商品信息 1. 定义相关参数 2. 分析并定义正则 3. 数据爬取 三.简单数据分析 1.导入库 2.中文显示 3.读取数据 4.分 ...

  5. python爬房源信息_用python爬取链家网的二手房信息

    题外话:这几天用python做题,算是有头有尾地完成了.这两天会抽空把我的思路和方法,还有代码贴出来,供python的初学者参考.我python的实战经历不多,所以代码也是简单易懂的那种.当然过程中还 ...

  6. selenium/requess爬取京东手机商品的详细信息1~selenium练习版

    selenium/requess爬取京东手机商品的详细信息1~selenium!! 前言 因为我也是个学生,所以代码可能会有点繁琐,我们都是超能100,一点点积累进步,其实有很多的地方可以简化,因为我 ...

  7. Python爬取豆瓣电影top250的电影信息

    Python爬取豆瓣电影top250的电影信息 前言 一.简介 二.实例源码展示 小结 前言 相信很多小伙伴在学习网络爬虫时,老师们会举一些实例案例讲解爬虫知识,本文介绍的就是经典爬虫实际案例–爬取豆 ...

  8. Selenium+Python3爬取微博我发出的评论信息

    Selenium+Python3爬取微博我发出的评论信息 需求 代码 注: 需求 记录对话信息:对话文本.时间.用户.被回复链接.被回复用户.被回复文本. 将数据信息持久化保存,可选择截图. 代码 # ...

  9. python 爬取链家数据_用python爬取链家网的二手房信息

    题外话:这几天用python做题,算是有头有尾地完成了.这两天会抽空把我的思路和方法,还有代码贴出来,供python的初学者参考.我python的实战经历不多,所以代码也是简单易懂的那种.当然过程中还 ...

最新文章

  1. 在路上---学习篇(一)Python 数据结构和算法 (4) --希尔排序、归并排序
  2. 自己发现的数学规律一
  3. 实现图片打乱_2020 回顾 | 25张图片,记录潮州的这一年
  4. Linux shell 的字符串截取
  5. Task/Parallel实现异步多线程
  6. .net中多控件共享事件处理程序的方法
  7. 登录 Unix 操作系统
  8. 微信淘宝客小程序开发多多客京东客六合一系统外卖cps返利源码
  9. nginx系列第一篇:nginx源码下载,编译和安装
  10. 必须安装三星系列android系统智能手机usb驱动程序,三星N9109W Android 5.0 (GALAXY Note 4 电信4G)usb驱动下载安装教程...
  11. MikroTik RB750r2/RB750gr3 操作记录
  12. Jeff Dean执笔:一文看尽2018谷歌AI重大突破
  13. mysql提现_MYSQL事务教程之Yii2.0商户提现功能
  14. CT重建-X射线断层成像仿真实验
  15. JavaScript|表格隔行变色(可作模板copy)
  16. SpringBoot发生404跳转404页面
  17. python爬虫能赚钱吗-个人利用Python爬虫技术怎么挣钱-10万被动收入
  18. 奥特曼宇宙英雄服务器维修,奥特曼宇宙英雄1.1.7版本
  19. stm32f103vet6采集dht11温湿度数据通过usart1在串口助手中显示
  20. 15 二叉树的中序遍历(Binary Tree Inorder Traversal)

热门文章

  1. JavaFX配置问题及解决措施:报错“缺少JavaFX组件”
  2. 汽车悬挂系统的现代控制分析(现代控制理论课程小论文)
  3. 012-基于 git hooks 的前端代码质量控制解决方案
  4. c语言课题设计题目猜数字游戏,C语言课题设计报告(猜数字游戏)文档.doc
  5. 收藏 | 什么是功率因数?
  6. 傻白入门芯片设计,盘点CPU业界的顶尖人才(十四)
  7. nfs 的 mount 命令
  8. 监控报警系统方案——SUB-1GHz 无线收发芯片DP4301性能兼容CMT2300和CC1101
  9. ThreadX全家桶源码和文档下载,含GUI设计器,GUI,文件系统,网络协议栈,USB协议栈等(2020-05-26)
  10. css js:cursor属性