我是金融专业的学生,对编码非常陌生。我一直在努力学习Python了一个星期。
目标: 在越南上市公司的财务报表数据刮痧 来源:https://www.vndirect.com.vn/portal/bang-can-doi-ke-toan/vnm.shtml?request_locale=en_GB(样本代码:VNM)
情况: 我使用Python 3 BS4,硒刮和熊猫的桌游戏。我已经读过有关Scrapy的文章,但我发现需要花更多的精力来学习。
问题:
正如你看到的,网站有选择年的下拉菜单,看,单位数... 我已经弄清楚了使用Selenium选择选项并单击“查看”按钮加载数据的部分。 我有麻烦的数据之后。我尝试使用“等到”,但网站元素没有变化。
移动到收入和CF报表,检查时数据在那里,但是(使用Chrome)在页面源中丢失。
谢谢您的帮助。
import requests as rq
import bs4
import pandas as pd
# ticker = input('Ticker')
ticker = 'vnm'
url = 'https://www.vndirect.com.vn/portal/bang-can-doi-ke-toan/' + ticker + '.shtml'
res = rq.get(url)
web_text = bs4.BeautifulSoup(res.text)
content = web_text.select('.bordertd')
mod_content =[]
for x in content:
mod_content.append(x.getText().strip())
def chunks(l, n):
for i in range(0, len(l), n):
yield l[i:i+n]
table = list(chunks(mod_content, 5))
bsheet=pd.DataFrame(table)
print(bsheet)
我将硒分离的部分保留下来:
from selenium import webdriver
from selenium.webdriver.support.ui import Select
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
browser = webdriver.Chrome('path')
browser.get('https://www.vndirect.com.vn/portal/bang-can-doi-ke-toan/VNM.shtml')
dropdown = Select(browser.find_element_by_name("searchObject.fiscalQuarter"))
dropdown.select_by_value('IN_YEAR')
browser.find_element_by_class_name('iButton').click()
# wait = WebDriverWait(browser, 10)
# element = wait.until(EC.element_to_be_clickable((By.NAME,'searchObject.fiscalQuarter')))
content = browser.page_source
browser.quit()
content = web_text.select('.bordertd')
mod_content =[]
for x in content:
mod_content.append(x.getText().strip())
mod_content