我正尝试使用Selenium和BeautifulSoup从HKEx.com.hk抓取股票数据,并处理数百种股票。 我发现这太笨拙了,因为我的代码指示WebDriver重新运行,弹出并关闭我打算进行Web剪贴的每只股票。 是否有任何更快或更平滑的方法呢? 这是我的代码:
from selenium import webdriver
from bs4 import BeautifulSoup
import pandas as pd
columns = ['col_name', 'col_last', 'col_issued_shares', 'col_summary']
df = pd.DataFrame(index=None, columns = columns)
stock_lists=pd.read_excel('python\WORK\comparable_sorting\stock_lists.xlsx')['stock_lists'].tolist()
for i in stock_lists:
driver = webdriver.Chrome()
r = driver.get("https://www.hkex.com.hk/Market-Data/Securities-Prices/Equities/Equities-Quote?sym={}&sc_lang=en".format(i))
content = driver.page_source
soup = BeautifulSoup(content,'html.parser')
col_name = soup.find('p', class_='col_name').get_text()
col_last = soup.find('span', class_='col_last').get_text()
col_issued_shares = soup.find('span', class_='col_issued_shares').get_text()
col_summary = soup.find('div', class_='company_txt col_summary').get_text()
lists = [[col_name, col_last, col_issued_shares, col_summary]]
df_temp = pd.DataFrame(lists, index=None, columns = columns)
df = df.append(df_temp, ignore_index=True)
driver.close()
print(df.head())
print(df.tail())
df.to_excel('python\WORK\comparable_sorting\comparables.xlsx',sheet_name='Sheet1')
此外,我是python的新手。对我的编码整洁有何建议?非常感谢。
p.s。
stock_lists
是数字列表,因为香港股票代码为数字格式。 (例如5、2888、700 ...等)