获取网页中text的坐标信息_Python读年报10-获取年报中竞争力和风险信息

48d9edb2e0aa327d8b67a4c24024687d.png

如果我们想批量获取许多上市公司的年报中,关于核心竞争力和风险的情况信息,可以用python来操作。

比如新赛股份(600540)_公司公告_新赛股份2018年年度报告新浪财经_新浪网

6981d56a41017dfff10cb90afc67b7f1.png
核心竞争力分析

329ef2c84a7c15ad798bf5093babd128.png
可能面对的风险

4ece20b1ed06569feaed4804b2af0f2d.png
自动将含有“核心竞争力”和“面对的风险”相关段落读取并储存

4cb1cd7067c0a4c481b4cc00b99747a8.png
对于每一家公司,第一行是竞争力列表,第二行是面临的风险

有两种方式获取,对应不同来源,首先从新浪行情来说

import xlrd #(excel read)来读取Excel文件
import xlwt #(excel write)来生成Excel文件
workbook = xlwt.Workbook()  # 新建一个工作簿
sheet = workbook.add_sheet("sheet_name")  # 在工作簿中新建一个表格
def write_excel_xls(path,value,inum):
    index = len(value)  # 获取需要写入数据的行数
    # print("index is",index)
    for num in range(0, index):
        sheet.write(inum,num,value[num])
    # for i in range(0, index):
    #     for j in range(0, len(value[i])):
    #         sheet.write(i, j, value[i][j])  # 像表格中写入数据(对应的行和列)

    print("xls格式表格写入数据成功!")

# coding=UTF-8
file_folder= "C:/Temp/"
file_name="stock_report_advantage_risk.xls"
# file_source="stock_list/stock_list_advantage_risk.txt"
file_source='stock_list/stock_mask.txt'
# print(file_foler+file_name)

########################
import urllib.request
import re
import os
import time
import random

stock=[]
f=open(file_folder+file_source,'rb')
for line in f.readlines():
    line=line.decode()
    print(line,end = '')
    line = line.replace('n','')
    stock.append(line)
print(stock)
f.close()
print('stock is',stock[1:5])
iinum = 1
for each in stock[1:]:
    # print(each[2:])
    each1=each[2:8]
    print('1股票代码',each)
    url='http://vip.stock.finance.sina.com.cn/corp/go.php/vCB_Bulletin/stockid/'+each1+'/page_type/ndbg.phtml'
    # url='http://vip.stock.finance.sina.com.cn/corp/go.php/vCB_Bulletin/stockid/'+each+'/page_type/ndbg.phtml'
    req = urllib.request.Request(url)
    print('2',each)
    req.add_header('User-Agent','Mozilla/5.0 (Windows NT 6.2; rv:16.0) Gecko/20100101 Firefox/16.0')
    page = urllib.request.urlopen(req)
    time.sleep(random.random() * 3)
    print('3',each)
    try:
        html = page.read().decode('gbk')
        target = r'&id=[_0-9_]{7}'
        print('4',each)
        # target = r'&id=[_0-9_]{6}'
        target_list = re.findall(target,html)
        # os.mkdir('./')
        # os.mkdir('./'+each)
        # os.mkdir('./'+'electricity-'+each)
        sid = each1
        if len(target_list)>0:
            print('5',each1,'2018和2015年target_list',target_list)
            print("6sid is",sid)
            year=2018
            each2=target_list[0]
            target_url='http://vip.stock.finance.sina.com.cn/corp/view/vCB_AllBulletinDetail.php?stockid='+sid+each2
            print('--8--',each1,year,'年报详情链接target_url,',target_url)

            url=target_url
            # 开始爬虫
            import requests
            headers = {'User-Agent': 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'}
            # print(url)
            response = requests.get(url, headers=headers)
            response.encoding = 'gbk'  # 解决乱码问题
            html_text = response.text
            # 开始爬虫

            import lxml
            from lxml import etree
            selector = etree.HTML(html_text)
            # title = selector.xpath('//table/tr/td//text()')
            title = selector.xpath('//p//text()')
            # 去除其中的冒号
            title_1 = []
            for i in title:
                i = i.strip()
                i = i.strip(':')
                title_1.append(i)
            # print("title_1", title_1[1500:])
            path1 = file_folder +'result/'+'口罩' + file_name
            print('###############',path1)
            title_1_advantage = []
            for title in range(len(title_1)):
                if title_1[title].find('报告期内核心竞争力分析')>-1:
                    for i in range(20):
                        # print('###############', i, '--title_1_advantage--', title_1_advantage)
                        # print('###############',i,'----',title_1[title+i])
                        title_1_advantage.append(title_1[title+i])
                        # print('###############',title_1_advantage[-1])
                    print('###############',title_1_advantage)
                elif title_1[title].find('可能面对的风险')>-1:
                    for j in range(10):
                        title_1_advantage.append(title_1[title+j])
                    print('###############',title_1_advantage)
            write_excel_xls(path1, [each[0:7], each[8:], target_url]+title_1_advantage[:19], iinum)
            iinum=iinum+1
            write_excel_xls(path1, [each[0:7], each[8:], target_url] + title_1_advantage[20:], iinum)
            workbook.save(path1)  # 保存工作簿
                    # 存入excel

            # 去除其中的冒号


            iinum=iinum+1

    except:
        print('年报列表页面编码错误;',path1,+title_1[0])

可以参考

  1. 来源-网易财经 yulang:Python读年报6-查询非标意见数据
  2. 来源-新浪行情 yulang:Python读年报3-查询负责审计的事务所
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值