[Python爬虫]爬取东方财富网公司公告需要注意的几个问题

在上一篇文章中,以爬取东方财富网公司公告为例,介绍了如何爬取利用ajax加载的网页,以及如何模拟翻页。但是,在实际应用的过程中,发现了一些问题。接下来就来一一分析解决。

问题一、公告数量过多,后面的公告无法爬取。

比如说,公告的页面数量是大于1000的,但是,我们最多只能看到1000页。那么,如果想要爬取更多的页面应该怎么办呢?

我这里有一个思路,就是先获取所有股票的id,根据股票的id来遍历。一般来说,单个股票的公司公告数量不会大于1000页。这样,就可以顺利爬取后面的公告了。


问题二、某只股票没有公司公告

解决了问题一,按照股票的id来分别爬取每只股票的公司公告。这样,就会带来一个新问题,有的股票没有公司公告怎么办?这时候,就需要使用try-catch进行判断,如果当前没有该元素,则返回。

try:
	do something..
except NoSuchElementException,e:
          return

问题三、一个公司的公告爬完了,页面重复爬最后一页,怎么办

当一个公司的公告爬完了,网页不会自动开始遍历下一家公司的公告,而是会重复的爬当前的最后一页。这就需要对“下一页” 连接是否有效进行判断

以东方财富网的公告页面为例,当“下一页”无效的时候,其class属性会变为“nolink”。那么,可以对是否出现nolink属性进行判断。

try:
                    nextPage = WebDriverWait(driver, 10).until(
                    EC.presence_of_element_located((By.XPATH, "//a[contains(text(),'下一页')]"))
                )
                    if nextPage.get_attribute('class') == 'nolink':
                        break
                    nextPage.click()
                except Exception,e:
                    break


这就是目前遇到的一些问题,及相应的解决方法。

改正过以后,除了断网,程序基本不会因为错误而退出。下面放一下新的代码连接,和上一个版本相比,更加实用和稳定。

代码连接:代码

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值