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

来源:互联网 发布:手机处理数据软件 编辑:程序博客网 时间:2024/06/10 17:13

在上一篇文章中,以爬取东方财富网公司公告为例,介绍了如何爬取利用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


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

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

代码连接:代码

0 0
原创粉丝点击