如何删除除数字以外的所有内容(韩国公司的网络爬虫市值)

how to delete everything but numbers (web crawling market cap of Korean Company)

求助,这个苦苦挣扎的哲学经济学专业的人。

我正在尝试从韩国网站获取三星电子的市值 'finance.naver.com'

(不一定是三星,我只是为了我的quant投资目的而需要爬取市值)

网站是 https://finance.naver.com/item/main.nhn?code=005930

这是网页图片,目标编号在红框内

这是我的代码

from bs4 import BeautifulSoup
import requests
mkc_url = 'https://finance.naver.com/item/main.nhn?code=005930'
mkc_result = requests.get(mkc_url)
mkc_obj = BeautifulSoup(mkc_result.content, "html.parser")

我发现目标号码在 'div' 标签中,'first' class

mkc = mkc_obj.find("div",{"class": "first"})

在'div'标签中,我发现数字在'em'标签中,'_market_sum'id

em_id = mkc.find("em", {"id":"_market_sum"})

最后我得到了这样的结果

'조'是韩币的单位所以我想删掉数字以外的所有内容,但我不知道如何

我所做的是将结果放入 DataFrame,并尝试使用 '.str.strip'

删除数字以外的所有内容
df_mkc = pd.DataFrame(em_id)
df_mkc[0] = df_mkc[0].str.strip('\n')
df_mkc[0] = df_mkc[0].str.strip('\t')
df_mkc[0] = df_mkc[0].str.strip()
df_mkc = df_mkc.replace({'$': '', ',': ''}, regex=True)

它变得越来越丑陋

我在这个时候点了出来

请帮忙!!!

感谢您的仁慈、智慧和慷慨

定义 em_id 后,通过执行

摆脱它的标签
em_txt = em_id.get_text()

然后,您可以使用(感谢 this answer

去除空格
clean_em = "".join(line.strip() for line in em_txt.split("\n"))

最后,如果货币始终相同,您可以创建一个包含两个数值的列表,方法是

mcap_list = clean_em.split('조')

你可能想通过

去掉4,299中的逗号
mcap_list[1] = mcap_list[1].replace(",","")

并使用

将值转换为整数
for i in range(len(mcap_list)):
    mcap_list[i] = int(mcap_list[i])

您现在 mcap_list 等于 [290,4299]

另一种解决方案是使用 regex and re.findall,考虑以下虚拟 DataFrame:

df = pd.DataFrame({'Extract' : ['Total revenue for this year is ,000, for last year it was 00',
                                'and profit in USD is 00.00','it is 20.00%',
                                'This is in Korean currency 500조']})

df['Numbers'] = df['Extract'].str.findall(r'(\d+[.,]?\d*)')

print(df['Numbers')

0    [10,000, 8000]
1         [2000.00]
2           [20.00]
3             [500]