利用selenium、requests库爬取新浪财经股票信息和相应公司年度报告

本文介绍了如何使用selenium和requests库爬取新浪财经的股票信息和公司年度报告。首先明确了爬取目标,分为两层,一层获取股票基本信息,另一层获取年度报告。接着分析了selenium和requests的优劣,并详细描述了爬取过程,包括解析股票列表、生成公司网页URL、找到年度报告页面以及下载报告的三种方法。最后提供了程序源码。
摘要由CSDN通过智能技术生成

一、明确爬取任务目标

由于我只知道新浪财经这一家财经类网站,所以决定爬取新浪财经网。爬取大概分为两层。第一层爬取各个股票的简略财经信息,并顺便获取相应公司的链接;第二层就利用上一层爬到的公司链接,爬取各个公司的年度报告。
我在第一层爬取到的信息类似于下面这样:

['600696', 'ST岩石', '2019-07-10', '0.02', '7435.61', '12.14', '738.57', '-46.04', '0.00', '2.46', '0.00', '26.87', '不分配', '明细', '--']

根据爬取到的股票id,可以生成第二层爬取的url。不过这个url并不是最终年度报告pdf资源的url,要获取这个链接还需要进一步的爬取。

二、selenium、requests优劣分析

selenium requests
爬取速度 较慢 较快
实现登录操作 容易 需要考虑一系列问题,很麻烦
页面中含有js代码生成元素 可以直接获取元素 很麻烦
如果网站有反爬虫机制 较容易避开 很麻烦

需要说明一下,有很多网站都会对用户的访问进行限速,当然也就限制了爬虫的速度,所以在实际爬取的时候selenium并不比requests慢很多。

三、“踩点”

财报查询
到新浪官网首页,选择“财报查询”,可以看到想要的股票列表。【相关链接】分析html文本,可以发现tbody中的每个tr标签,都对应一行股票信息
分析股票列表html
点击股票名称,可以进入相应公司的页面。然后,点击“公司咨询”>“年度报告”就可以看到公司的年度报告啦。
获取年度报告的页面

同样,可以知道年度报告的链接都在class=datelist的div标签下。
分析年度报告html
大概知道了这些信息后,就可以开始编写代码爬取信息啦。

四、代码实现

1、解析股票列表
parse_page实现了对股票列表html的解析。tbody > tr对应列表中的一行,而tr > td 则对应了每一行的各个信息。items是一个生成器,从中可以获取所有行。contents也是一个生成器,可以获取每一列。按照这样的方法解析股票简略信息。

    def parse_page(self):
        self.wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "#box > table > tbody")))
        html = self.browser.page_source
        doc = pq(html)
        items = doc("#box > table > tbody > tr").items()
        for item in items:
            # 从上到下爬取,最后一个item为页面链接
            if item('td').attr('id') != 'pages':
                info_list = []
                # href为详细信息链接
                href 
爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL可以通过链接分析、站点地图、搜索引擎等方式获取。 请求网页: 爬虫使用HTTP或其他协议向目标URL发起请求,获取网页的HTML内容。这通常通过HTTP请求实现,如Python中的Requests。 解析内容: 爬虫对获取的HTML进行解析,提取有用的信息。常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据、文件或其他存储介质中,以备后续分析或展示。常用的存储形式包括关系型数据、NoSQL数据、JSON文件等。 遵守规则: 为避免对网站造成过大负担或触发爬虫机制,爬虫需要遵守网站的robots.txt协议,限制访问频率和深度,并模拟人类访问行为,如设置User-Agent。 爬虫应对: 由于爬虫的存在,一些网站采取了爬虫措施,如验证码、IP封锁等。爬虫工程师需要设计相应的策略来应对这些挑战。 爬虫在各个领域都有广泛的应用,包括搜索引擎索引、数据挖掘、价格监测、新闻聚合等。然而,使用爬虫需要遵守法律和伦理规范,尊重网站的使用政策,并确保对被访问网站的服务器负责。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

萌哒哒虎

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值