dddddddddddddd

本文介绍了一种使用Python爬虫从同花顺网站抓取股票基本信息的方法。通过requests库获取网页内容,利用BeautifulSoup解析HTML,并借助正则表达式提取关键信息。最后将收集的数据存储到MongoDB中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import requests  # 导入requests包
from bs4 import BeautifulSoup
from urllib import request
import re
import pymongo

mongo_client = pymongo.MongoClient('mongodb://localhost:27017/')
# 若没有Database 和Collection,则会自动创建
mongo_db = mongo_client['quant_01']
mongo_collection = mongo_db['EPS_Stock']
'''
Company name:', 'Net assets per share:', 'Earnings per share:', 'Net profit:', 'Net profit growth rate:', 
'Net profit growth rate:', 'Operating income:', ' Total share capital: ', 'tradable shares:
'''

headers = {
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3877.400 QQBrowser/10.8.4507.400'
}

all_list = []
for i in range(3):
    # 同花顺下载数据
    Furl = 'http://stockpage.10jqka.com.cn/'
    allrul = ['600511', '600512', '600513', '600515']
    url = Furl + allrul[i]
    print(url)
    req = request.Request(url=url, headers=headers)
    rsp = request.urlopen(req)
    # print(rsp.read().decode('utf-8'))
    html = rsp.read().decode('utf-8')
    bf = BeautifulSoup(html, "html.parser")
    texts = bf.find_all('dl', class_='company_details')
    str_Result = str(texts)
    # print(str_Result)
    splitR = str_Result.splitlines()
    print(splitR)
    print(len(splitR))

    # "<dd.+?/dd>|<dt.+?/dt>"   "<dd.+?/dd>|<dt.+?/dt>"gm
    # print('+++++++++++++++++++++++++++++++++++++++++++')
    result = re.findall(r"<dd.+?/dd>|<dt.+?/dt>", str_Result, flags=0)
    # print(result)
    # print(len(result))

    num_list1 = []
    num_list2 = []
    for i in range(len(result)):
        if result[i].find('公司名称') > -1:
            num_list1.append(result[i])
            num_list2.append(result[i + 1])
        else:
            pass
        if result[i].find('上市时间') > -1:
            num_list1.append(result[i])
            num_list2.append(result[i + 1])
        else:
            pass
        if result[i].find('每股净资产') > -1:
            num_list1.append(result[i])
            num_list2.append(result[i + 1])
        else:
            pass
        if result[i].find('每股收益') > -1:
            num_list1.append(result[i])
            num_list2.append(result[i + 1])
        else:
            pass
        if result[i].find('净利润') > -1:
            num_list1.append(result[i])
            num_list2.append(result[i + 1])
        else:
            pass
        if result[i].find('净利润增长率') > -1:
            num_list1.append(result[i])
            num_list2.append(result[i + 1])
        else:
            pass
        if result[i].find('营业收入') > -1:
            num_list1.append(result[i])
            num_list2.append(result[i + 1])
        else:
            pass
        if result[i].find('总股本') > -1:
            num_list1.append(result[i])
            num_list2.append(result[i + 1])
        else:
            pass
        if result[i].find('流通股') > -1:
            num_list1.append(result[i])
            num_list2.append(result[i + 1])
        else:
            pass

    print('$$$$$$$$$$$$$$$$$$$$$$$$$')
    # print(num_list1)
    # print(len(num_list1))
    # Important_Books1 = []
    # for m in num_list1:
    #     Important_Books1.append(m[4:-5])
    #
    # print(Important_Books1)
    # print(num_list2)
    # print(len(num_list2))
    # ['公司名称:', '每股净资产:', '每股收益:', '净利润:', '净利润增长率:', '净利润增长率:',
    # '营业收入:', '总股本:', '流通股:']
    Important_Books1 = ['Company_Name', 'Net_assets_per_share', 'EPS', 'Net_Profit', 'Net_Profit_Ratio', 'operating_revenue',
                 'total_share_capital', 'outstanding_shares']
    Important_Books2 = []
    for m in num_list2:
        Important_Books2.append(m[4:-5])

    print(Important_Books2)

    dict1 = dict(zip(Important_Books1, Important_Books2))
    # print(dict1)

    all_list.append(dict1)
'''        列表转字典
list1 = ['key1','key2','key3']
list2 = ['1','2','3']
dict(zip(list1,list2))
{'key1':'1','key2':'2','key3':'3'}
'''
print('&&&&&&&&&&&&&&&&&&&&&&&&&&&&&')
print(all_list)
# mongo_collection.insert_many(all_list)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值