Python实战-贵州茅台和华能信托股权穿透研究(附完整代码)

Table of Contents

文章目录

  • 1、如何对贵州茅台的股权进行穿透研究
  • 2、茅台股权穿透研究代码如下
  • 3、发现在29行代码出现问题,就是href取得是空数组,怀疑是p_href的问题
  • 4、取不到股东信息,所以再仔细查看应该是下面这个第一个地址:
  • 5、这里注意要加sleep,要不然有时候容易报错,找不到网页元素
  • 6、你知道i[0:-1]是什么意思吗?
  • 7、华能信托和贵州茅台股权穿透研究完整代码:

1、如何对贵州茅台的股权进行穿透研究

在这里插入图片描述
在这里插入图片描述
今天就来讲讲如何对贵州茅台股权进行研究

2、茅台股权穿透研究代码如下

#!/usr/bin/env python
# coding: utf-8

# In[1]:


from selenium import webdriver
import re
import time
import pandas as pd


# In[2]:


company_name = '华能信托'
browser = webdriver.Chrome()
url = 'https://xin.baidu.com/s?q=' + company_name
browser.get(url)
data = browser.page_source
print(data)


# In[3]:


p_href = '<h3 data-v-4dc1d36e="" class="title"><a data-v-4dc1d36e="" target="_blank" href="(.*?)"'
href = re.findall(p_href, data)
url2 = 'https://xin.baidu.com' + href[0]
browser.get(url2)
data = browser.page_source


# In[5]:


table = pd.read_html(data)
df = table[1]
df


# In[7]:


company = df['发起人/股东'][1]
company


# In[12]:


company_split = company.split(' ')
company_split


# In[14]:


company = df['发起人/股东'][0]
company_split = company.split(' ')
for i in company_split:
    if '有限公司' in i:
        print(i)


# In[13]:


company = df['发起人/股东'][0]
company_split = company.split(' ')
for i in company_split:
    if len(i) > 6:
        print(i)


# In[15]:


def baidu(company_name):
    browser = webdriver.Chrome()
    url = 'https://xin.baidu.com/s?q=' + company_name
    browser.get(url)
    time.sleep(2)  # 休息2秒,防止页面没加载完
    data = browser.page_source
    
    p_href = '<h3 data-v-4dc1d36e="" class="title"><a data-v-4dc1d36e="" target="_blank" href="(.*?)"'
    href = re.findall(p_href, data)
    url2 = 'https://xin.baidu.com' + href[0]
    browser.get(url2)
    time.sleep(2)  # 休息2秒,防止页面没加载完
    data = browser.page_source
    table = pd.read_html(data)
    df = table[1]
    
    browser.quit()  # 退出模拟浏览器
    
    company = df['发起人/股东'][0]
    company_split = company.split(' ')
    for i in company_split:
        if len(i) > 6:  # 不要用if '有限公司' in i,这个不太好,例如国资委不含有“有限公司 ”字样
            return i


# In[16]:


baidu('中国华能集团有限公司')


# In[17]:


company_1 = baidu('华能信托')
company_2 = baidu(company_1)
company_3 = baidu(company_2)


# In[18]:


company_1, company_2, company_3


# In[ ]:





# In[ ]:





# In[19]:


company = '贵州茅台'
while True:
    try:
        company = baidu(company)
        print(company)
    except:
        break
        
company


# In[ ]:





# In[ ]:





# In[38]:


num_sum = 0.0
num = 0
for i in df['持股比例']:
    if i == '-':
        num = 1
        break
    i = float(i[0:-1])  # 清除百分号,并转为浮点数
    print(i)
    num_sum = i + num_sum
    num += 1
    if num_sum > 80:
        break
        
print(num)


# In[17]:


for i in range(num):
    company_i = df['发起人/股东'][i]
    company_split = company_i.split(' ')
    for j in company_split:
        if '有限公司' in j:
            print(j)


# In[ ]:





# In[ ]:

执行过程中发现报错:

                "app": "universe", // 调用方端内 APP 类型:iOS/Android/universe,非端内传 universe
                "ver": "", // app版本号
            }
            xaf.init(initParams);
        } catch(e) {
            console.log(e);
        }</script> <script src="//xinpub.cdn.bcebos.com/aiqicha/static/1667908976/js/s.031a6934a4e.js"></script> </body></html>
Traceback (most recent call last):
  File "E:/tech/SufferSpace/股权穿透研究-1110.py", line 29, in <module>
    url2 = 'https://xin.baidu.com' + href[0]
IndexError: list index out of range

Process finished with exit code 1

3、发现在29行代码出现问题,就是href取得是空数组,怀疑是p_href的问题

于是通过网页发现应该是这个地址:
在这里插入图片描述

但是等到执行后面的代码,发现有个“发起人/股东”,因为按照上面这个地址,在这个页面中: https://aiqicha.baidu.com/brand/detail?pid=65781811851309&id=414444999

4、取不到股东信息,所以再仔细查看应该是下面这个第一个地址:

在这里插入图片描述
通过网址: https://aiqicha.baidu.com/company_detail_65781811851309

修改匹配逻辑如下:

p_href = '<h3 data-v-387da8b0="" class="title"><a data-v-387da8b0="" target="_blank" href="(.*?)"'

#p_href = '<a data-v-05558e48="" href="(.*?)" data-log-an="s-brandpanel" data-log-title="s-brandpanel-brand" class="item-inner">'
href = re.findall(p_href, data)
# https://aiqicha.baidu.com/brand/detail?pid=65781811851309&id=414444999
url2 = 'https://xin.baidu.com' + href[0]
#url2 = "https://aiqicha.baidu.com/company_detail_65781811851309"
browser.get(url2)
time.sleep(3)
data = browser.page_source

5、这里注意要加sleep,要不然有时候容易报错,找不到网页元素

time.sleep(3)

修改完后继续执行代码,又报错了

    raise KeyError(key) from err
KeyError: '发起人/股东'

Process finished with exit code 1

找不到“发起人/股东”,查看网页,确实没有这个,应该是“股东名称”
在这里插入图片描述
修改完后,继续执行代码,又报错了:

    i = float(i[0:-1])  # 清除百分号,并转为浮点数
ValueError: could not convert string to float: '67.92149%持股详情'

Process finished with exit code 1


6、你知道i[0:-1]是什么意思吗?

a = [0,1,2,3,4,5,6,7,8,9]

b = a[i:j] 表示复制a[i]到a[j-1],以生成新的list对象

b = a[1:3] 那么,b的内容是 [1,2]

当i缺省时,默认为0,即 a[:3]相当于 a[0:3]

当j缺省时,默认为len(alist), 即a[1:]相当于a[1:10]

a[:-1]其实就是去除了这行文本的最后一个字符(换行符)后剩下的部分 ,结果是:[0,1,2,3,4,5,6,7,8]

A = ”67.92149%持股详情>“,这个字符,要取出纯数字,就是:
A[0:-6],-6正好是%的那个位置,然后修改代码如下:

num_sum = 0.0
num = 0
for i in df['持股比例']:
    if i == '-':
        num = 1
        break
    i = float(i[0:-6])  # 清除百分号,并转为浮点数
    print(i)
    num_sum = i + num_sum
    num += 1
    if num_sum > 80:
        break
        
print(num)
最后执行结果如下:
华能资本服务有限公司
华能资本服务有限公司
贵州省人民政府国有资产监督管理委员会
67.92149
31.47813
2
华能资本服务有限公司
贵州乌江能源投资有限公司

Process finished with exit code 0

7、华能信托和贵州茅台股权穿透研究完整代码:

#!/usr/bin/env python
# coding: utf-8

# In[1]:


from selenium import webdriver
import re
import time
import pandas as pd


# In[2]:


company_name = '华能信托'
browser = webdriver.Chrome()
url = 'https://xin.baidu.com/s?q=' + company_name
browser.get(url)
time.sleep(3)
data = browser.page_source
print(data)


# In[3]:


p_href = '<h3 data-v-387da8b0="" class="title"><a data-v-387da8b0="" target="_blank" href="(.*?)"'
href = re.findall(p_href, data)
url2 = 'https://xin.baidu.com' + href[0]
browser.get(url2)
time.sleep(3)
data = browser.page_source


# In[5]:


table = pd.read_html(data)
df = table[1]
df


# In[7]:


company = df['股东名称'][1]
company


# In[12]:


company_split = company.split(' ')
company_split


# In[14]:


company = df['股东名称'][0]
company_split = company.split(' ')
for i in company_split:
    if '有限公司' in i:
        print(i)


# In[13]:


company = df['股东名称'][0]
company_split = company.split(' ')
for i in company_split:
    if len(i) > 6:
        print(i)


# In[15]:


def baidu(company_name):
    browser = webdriver.Chrome()
    url = 'https://xin.baidu.com/s?q=' + company_name
    browser.get(url)
    time.sleep(2)  # 休息2秒,防止页面没加载完
    data = browser.page_source
    
    p_href = '<h3 data-v-387da8b0="" class="title"><a data-v-387da8b0="" target="_blank" href="(.*?)"'
    href = re.findall(p_href, data)
    url2 = 'https://xin.baidu.com' + href[0]
    browser.get(url2)
    time.sleep(2)  # 休息2秒,防止页面没加载完
    data = browser.page_source
    table = pd.read_html(data)
    df = table[1]
    
    browser.quit()  # 退出模拟浏览器
    
    company = df['股东名称'][0]
    company_split = company.split(' ')
    for i in company_split:
        if len(i) > 6:  # 不要用if '有限公司' in i,这个不太好,例如国资委不含有“有限公司 ”字样
            return i


# In[16]:


baidu('中国华能集团有限公司')


# In[17]:


company_1 = baidu('华能信托')
company_2 = baidu(company_1)
company_3 = baidu(company_2)


# In[18]:


company_1, company_2, company_3


# In[ ]:





# In[ ]:





# In[19]:


company = '贵州茅台'
while True:
    try:
        company = baidu(company)
        print(company)
    except:
        break
        
company


# In[ ]:





# In[ ]:





# In[38]:


num_sum = 0.0
num = 0
for i in df['持股比例']:
    if i == '-':
        num = 1
        break
    i = float(i[0:-6])  # 清除百分号,并转为浮点数
    print(i)
    num_sum = i + num_sum
    num += 1
    if num_sum > 80:
        break
        
print(num)


# In[17]:


for i in range(num):
    company_i = df['股东名称'][i]
    company_split = company_i.split(' ')
    for j in company_split:
        if '有限公司' in j:
            print(j)


# In[ ]:





# In[ ]:

文章出处登录后可见!

立即登录
已经登录? 立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
青葱年少的头像青葱年少普通用户
0
【计算机视觉】图像分割与特征提取——基于Log、Canny的边缘检测
上一篇 2023年2月17日 下午8:27
吴恩达 – 机器学习课程笔记(持续更新)
下一篇 2023年2月17日 下午8:27

相关推荐

  • 这是一篇由ChatGPT生成的博客 2023年2月25日
  • 【爬虫+数据清洗+可视化】用Python分析“淄博烧烤“的评论数据 2023年6月16日
  • 探索设计模式的魅力:AI大模型如何赋能C/S模式,开创服务新纪元 2024年4月10日
  • python福建福州招聘数据可视化大屏全屏系统设计与实现(django框架) 2023年12月19日
  • 如何彻底卸载anaconda3(win10) 2023年3月5日
  • 灰色预测模型 2023年2月26日
  • python爬虫实战之逆向分析酷狗音乐 2023年3月11日
  • conda虚拟环境路径 2023年11月3日
  • 蓝桥杯python组最后几天冲刺——超级实用并且详细的python技巧 2023年3月11日
  • Python快速搭建网站 2023年11月9日
  • 毕业设计-基于深度学习的交通标识识别-opencv 2023年2月23日
  • Cargo, the Rust package manager, is not installed or is not on PATH. 解决方案 2023年12月5日
  • ResUnet++ 2023年6月13日
  • python入门到精通 练习题30道(初级) 2023年3月10日
  • 表格识别技术综述 2023年3月4日
  • Allure的安装及配置 2023年6月15日

赞助商

此站出售,如需请站内私信或者邮箱!

PHP网站源码福州网站收录优化极速网站优化扬州网站排名优化方案上海优化网站排名招商加盟网站做优化哪家好mars22崇仁网站优化昆明网站优化怎么收费汉口全网营销公司哪家网站优化好济阳济南网站建设优化网站导航怎么做优化关于网站优化公司网站优化主要优化的内容河北家纺行业网站优化推广渠道辽源网站优化公司报价东莞网站优化出售海北网站seo优化湘潭外贸网站优化外包镇雄网站优化报价赤峰网站网址优化上虞网站seo优化怀化湖南网站优化推广png优化网站贵阳如何网站推广优化上海优化网站随州网站搜索引擎优化网站优化 荐布马 网络网站搜索排名优化价格仁怀百度网站优化沈阳企业网站排名优化大兴公司网站排名优化歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

PHP网站源码 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化