爬取财务报表通常涉及以下步骤:
准备工作
确保安装了`requests`和`lxml`库,可以使用`pip install requests lxml`命令进行安装。
创建数据抓取器
创建一个名为`DataScraper`的类,用于封装数据抓取相关的方法,如获取报表数据、解析并提取表头信息、将数据写入CSV文件。
分析网页结构
使用浏览器的开发者工具观察网页,特别是网络标签页中的XHR请求,找到报表数据的请求URL。
编写爬虫脚本
使用`requests`库发送HTTP请求,获取报表数据。
使用`lxml`库解析HTML内容,提取所需数据。
可以使用`pandas`库将数据保存到CSV文件或其他格式。
处理分页和动态加载
如果报表有多页,需要编写分页逻辑,模拟点击下一页按钮。
对于动态加载的内容,可以使用`selenium`库模拟浏览器操作。

注意事项
遵守网站的`robots.txt`文件规定,尊重网站的爬取规则。
注意处理可能的反爬虫机制,如设置合适的请求头、使用代理IP等。
爬取完成后,检查数据内容是否符合预期,并进行必要的数据清洗。
import requestsfrom lxml import htmlimport pandas as pdclass DataScraper:def __init__(self, base_url):self.base_url = base_urldef fetch_data(self, company_code, year, report_period):url = f"{self.base_url}/{company_code}/{year}/{report_period}"response = requests.get(url)tree = html.fromstring(response.content)解析数据,提取所需字段示例:提取公司名称、股票代码、年报全称、下载链接等company_name = tree.xpath('//div[@]/text()')stock_code = tree.xpath('//div[@]/text()')annual_report_name = tree.xpath('//div[@]/text()')download_link = tree.xpath('//div[@]/a/@href')return {"company_name": company_name,"stock_code": stock_code,"annual_report_name": annual_report_name,"download_link": download_link}def save_to_csv(self, data, file_path):df = pd.DataFrame([data])df.to_csv(file_path, index=False)示例使用scraper = DataScraper("http://example.com/financial-reports")data = scraper.fetch_data("000001", 2020, "annual")scraper.save_to_csv(data, "financial_reports.csv")
请根据实际的网站结构和报表数据格式调整代码中的XPath选择器和数据处理逻辑。如果需要处理更复杂的页面交互或动态内容加载,可能需要使用`selenium`库。
