python基金比较上机题_入Python第一步,从贴“python爬取基金 筛选股票 ”

[Python] 纯文本查看 复制代码# selenium请求[基金持仓股票详情页面url]的方法,爬取基金的持仓股票名称、持仓量;

def hold_a_position(url):

stock_name = [] # 定义一个数组,存储证券的名称

amount = [] #定义一个数组,存储证券的持仓

# 浏览器动作

chrome_options = webdriver.ChromeOptions()

chrome_options.add_argument('--headless')

chrome_options.add_argument('--disable-gpu')

driver = webdriver.Chrome(options=chrome_options) # 初始化浏览器,无浏览器界面的,保持后台运行;

driver.get(url) # 请求基金持仓的信息

element_result = is_element(driver, "tol") # 是否存在这个元素,用于判断是否有持仓信息;

#print(url + '\n')

if element_result == True: # 如果有持仓信息则爬取;

wait = WebDriverWait(driver, 3) # 设置一个等待时间

input = wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'tol'))) # 等待这个class的出现;

ccmx_page = driver.page_source # 获取页面的源码

ccmx_xpath = etree.HTML(ccmx_page) # 转换成成 xpath 格式

trs = ccmx_xpath.xpath("//div[@class='txt_cont']//div[@id='cctable']//div[@class='box'][1]//tr")

if trs:

#print("开始获取基金持仓信息")

for tr in trs:

stock_name_t = tr.xpath("./td[3]//text()")

if len(stock_name_t) != 0: #获取成功才返回数据

stock_amount_t = tr.xpath("./td[8]//text()")

if len(stock_amount_t) != 0:

stock_amount = stock_amount_t[0].replace(",", "") #去除持仓中的逗号

if stock_amount.split(".")[-1].isdigit(): #如果是数值则继续,此处还待优化,仍有字母数据返回

stock_name.append(stock_name_t[0])

amount.append(stock_amount)

#print(stock_name)

#print(amount)

driver.quit()

return stock_name,amount

else: # 如果没有持仓信息,则返回null字符;

driver.quit()

return "null","null"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值