栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

东方财富单页tables数据爬取selenium

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

东方财富单页tables数据爬取selenium

爬取当天龙虎榜买入机构大于2并且涨停的股票

龙虎榜机构每日买卖网址:机构买卖每日统计 _ 数据中心 _ 东方财富网

首先将当前页面的数据获取下来:

# 设置变量url
url = 'http://data.eastmoney.com/stock/jgmmtj.html'
# 设置发那个问的浏览器的路径,webdriver放在python目录下,不用设置路径
path = 'F:\program\ProgramData\ancondas3\chromedriver.exe'
option = webdriver.ChromeOptions()   # 网址获取
# option.add_argument('headless')     # 网址不弹出
browser = webdriver.Chrome(options=option, executable_path=path)
browser.get(url)
time.sleep(2)

element = browser.find_element_by_xpath('//*[@id="dataview"]/div[2]/div[2]/table')
# 获取表body
tbody_content = element.find_elements_by_css_selector('#dataview > div.dataview-center > div.dataview-body > table > tbody > tr')
# 将表body str存储为list
tbody_str = []
for tbody in tbody_content:
    tbody_str.append(tbody.text)
print(tbody_str)

用到的方法是selenium的元素定位:

  • find_element_by_xpath(‘xpath’)去网址按F12,用元素查找,找到table元素位置,右键copy->xpath
  • find_elements_by_css_selector('selector‘)方法同上,copy->selector

获取到的table数据,每一行是一个字符串,中间用空格隔开的,所以需要自己清洗数据:

# 将body的每一行信息拆分存储为list
tbody_series = []
for str in tbody_str:
    str = str.replace('%', '')  # 去掉字符串中的%,以便后面进行计算数据
    list = str.split(' ', 16)
    tbody_series.append(list)
# 将数据转为Dataframe,加上列名
df_lhb = pd.Dataframe(tbody_series).loc[:, [1, 2, 5, 6, 7]].rename(
    columns={1: '股票代码', 2: '股票名称', 5: '收盘价', 6: '涨幅', 7: '买入机构'})
# print(df_lhb)
df_lhb['涨幅'] = df_lhb['涨幅'].astype(float)
df_lhb['买入机构'] = df_lhb['买入机构'].astype(int)
print(df_lhb)

用到的发方法就是:list = str.split(''),字符串里带有%,用str.replace('%', '')去掉%,然后,转为Dframe格式,返回的结果如下:

然后计算涨幅大于2并且涨停的股票:

result = df_lhb[(df_lhb['买入机构'] >= 2) & (df_lhb['涨幅'] > 9.95)]
print(result)

结果如下:

 后面研究翻页爬取,这个方法爬取数据很慢,还要继续学习研究

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/269700.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号