【小白】利用selenium+python爬取天天基金网--模拟人工查询基金信息
一、安装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爬取天天基金网--模拟人工查询基金信息相关推荐
- 完全小白篇-使用Python爬取网络小说
完全小白篇-使用Python爬取网络小说 一.找一个你要爬取的小说 二.分析网页 网页的展示方式 需要用到的库文件 三.向网站发送请求 四.正则提取 五.跳转的逻辑 六.后续处理 七.保存信息进入do ...
- 完全小白篇-用python爬取豆瓣电影影评
完全小白篇-用python爬取豆瓣影评 打开豆瓣电影 随机电影的所有影评网页 跳转逻辑 分析影评内容获取方法 逐一正则提取影评 针对标签格式过于多样的处理 针对提出请求的频率的限制 存储方式(本次sq ...
- python爬取boss直聘招聘信息_年底啦,利用Python爬取Boss直聘的招聘信息,为明年跳槽做准备...
原标题:年底啦,利用Python爬取Boss直聘的招聘信息,为明年跳槽做准备 前言 为什么都说程序员的薪资高,但是刚开始入职的你,薪资并不是自己想象中的那样,首先是你的工作经验不足,其次就是需要不断的 ...
- python爬取并分析淘宝商品信息
python爬取并分析淘宝商品信息 背景介绍 一.模拟登陆 二.爬取商品信息 1. 定义相关参数 2. 分析并定义正则 3. 数据爬取 三.简单数据分析 1.导入库 2.中文显示 3.读取数据 4.分 ...
- python爬房源信息_用python爬取链家网的二手房信息
题外话:这几天用python做题,算是有头有尾地完成了.这两天会抽空把我的思路和方法,还有代码贴出来,供python的初学者参考.我python的实战经历不多,所以代码也是简单易懂的那种.当然过程中还 ...
- selenium/requess爬取京东手机商品的详细信息1~selenium练习版
selenium/requess爬取京东手机商品的详细信息1~selenium!! 前言 因为我也是个学生,所以代码可能会有点繁琐,我们都是超能100,一点点积累进步,其实有很多的地方可以简化,因为我 ...
- Python爬取豆瓣电影top250的电影信息
Python爬取豆瓣电影top250的电影信息 前言 一.简介 二.实例源码展示 小结 前言 相信很多小伙伴在学习网络爬虫时,老师们会举一些实例案例讲解爬虫知识,本文介绍的就是经典爬虫实际案例–爬取豆 ...
- Selenium+Python3爬取微博我发出的评论信息
Selenium+Python3爬取微博我发出的评论信息 需求 代码 注: 需求 记录对话信息:对话文本.时间.用户.被回复链接.被回复用户.被回复文本. 将数据信息持久化保存,可选择截图. 代码 # ...
- python 爬取链家数据_用python爬取链家网的二手房信息
题外话:这几天用python做题,算是有头有尾地完成了.这两天会抽空把我的思路和方法,还有代码贴出来,供python的初学者参考.我python的实战经历不多,所以代码也是简单易懂的那种.当然过程中还 ...
最新文章
- 在路上---学习篇(一)Python 数据结构和算法 (4) --希尔排序、归并排序
- 自己发现的数学规律一
- 实现图片打乱_2020 回顾 | 25张图片,记录潮州的这一年
- Linux shell 的字符串截取
- Task/Parallel实现异步多线程
- .net中多控件共享事件处理程序的方法
- 登录 Unix 操作系统
- 微信淘宝客小程序开发多多客京东客六合一系统外卖cps返利源码
- nginx系列第一篇:nginx源码下载,编译和安装
- 必须安装三星系列android系统智能手机usb驱动程序,三星N9109W Android 5.0 (GALAXY Note 4 电信4G)usb驱动下载安装教程...
- MikroTik RB750r2/RB750gr3 操作记录
- Jeff Dean执笔:一文看尽2018谷歌AI重大突破
- mysql提现_MYSQL事务教程之Yii2.0商户提现功能
- CT重建-X射线断层成像仿真实验
- JavaScript|表格隔行变色(可作模板copy)
- SpringBoot发生404跳转404页面
- python爬虫能赚钱吗-个人利用Python爬虫技术怎么挣钱-10万被动收入
- 奥特曼宇宙英雄服务器维修,奥特曼宇宙英雄1.1.7版本
- stm32f103vet6采集dht11温湿度数据通过usart1在串口助手中显示
- 15 二叉树的中序遍历(Binary Tree Inorder Traversal)
热门文章
- JavaFX配置问题及解决措施:报错“缺少JavaFX组件”
- 汽车悬挂系统的现代控制分析(现代控制理论课程小论文)
- 012-基于 git hooks 的前端代码质量控制解决方案
- c语言课题设计题目猜数字游戏,C语言课题设计报告(猜数字游戏)文档.doc
- 收藏 | 什么是功率因数?
- 傻白入门芯片设计,盘点CPU业界的顶尖人才(十四)
- nfs 的 mount 命令
- 监控报警系统方案——SUB-1GHz 无线收发芯片DP4301性能兼容CMT2300和CC1101
- ThreadX全家桶源码和文档下载,含GUI设计器,GUI,文件系统,网络协议栈,USB协议栈等(2020-05-26)
- css js:cursor属性