Python爬虫实战(批量采集Stock数据,并保存到Excel中)
实例描述
通过编写爬虫,将指定日期时段内的全部上市公司Stock数据爬取下来,并按照Stock代码保存到相应的Execl文件中。
这个案例主要分为两大步骤:1)要知道上市公司有哪些;2)根据每一个上市公司的Stock编号爬取数据。两部分代码相对比较独立,可以做成两个代码文件。一个文件用来爬取Stock代码,另一个文件用来爬取Stock内容。
爬取Stock代码
爬取Stock代码的基本思路是:
1)分析网站上的网页源代码,找到目标代码。
2)利用正则表达式,在整个网页里搜索目标代码,从而提取出索要的信息。
找到目标网站
使用Chrome浏览器访问链接可以看到全部的Stock代码;
打开调试窗口,查看网页代码
保留当前浏览器窗口为活动页面,按F12键显示出网页的源代码调试窗口,单击调试窗口的Element按钮,可以看到页面的HTML代码。
在网页源码中找到目标元素
网页的源代码是按照HTML的语法规则自动折叠的。可以用光标在HTML代码中任意单击将其展开。当移动到某个元素时,会看到右侧网页中对应的元素会有变化,呈现被选中状态。
分析目标源代码,找出规则
上图中左侧显示的内容,与右侧代码之间的对应关系。左侧显示的每个Stock代码所对应的源代码格式都是固定的。
如下图所示的源代码内容,便是要找到的目标代码。“.html”前面的“Stock代码”就是需要爬取的内容。
编写代码爬取Stock代码
编写代码实现urlTolist函数,并在该函数里实现主要的爬取功能;
1)通过使用urllib.request模块中的urlopen函数访问目的链接;
2)通过urlopen返回值的read方法获得网页的全部内容;
3)使用re模块下的compile韩式来做正则表达式的计算模板,其模板字符串就是之前分析的网页目标代码;
4)调用re.compile返回对象的findall方法,来对网页的html代码进行正则表达式计算。得到的返回值code便是最终的爬取内容。
上述代码运行后的结果如下;
爬取Stock内容
通过访问网易提供的服务接口,可以获取到Stock内容。只需按照其提供的请求格式,传入Stock代码及索要查看的时间段,即可得到stock的具体数据。
编写代码爬取批量内容
在代码实现上,仍然使用urllib.request模块进行网络请求,并将调用urllib.request模块下的urlretrieve函数,将返回的数据保存到Execl表里。
代码中,设置的时间段为8个多月,即从20180101到20180831.保存的结果放在D盘的all_stock_data路径下。为了保证保存操作正常运行,需要确保D盘下存在all_stock_data文件夹。(若没有,先创建一个)
运行代码结果显示
代码运行结束之后,可以在D盘的all_stock_data文件夹下找到生成的stock数据文件。
爬取stock数据的案例就结束了。
爬取项目的其他技术
爬虫是Python语言应用很广的项目方向,涉及到的知识非常多。篇幅有限,简单举例说明。还有:多线程方式的并发爬取、动态网页的爬取、跨域处理、子链查找、自动登录提权爬取、以及反爬虫处理等多种技术。
Python变量和简单数据类型(二)
Python编程入门到实践—列表篇(一)
Python编程入门到实践—列表篇(二)
Python基础编程—操作列表篇(一)
Python基础编程—操作列表篇(二)
Python基础编程——if语句篇(一)
Python基础编程——if语句篇(二)
Python基础编程—字典篇(一)
Python基础编程—字典篇(二)
Python基础编程—用户输入和while循环
Python基础编程——函数(一)
Python基础编程——函数(二)
Python基础编程——类(一)
Python基础编程——类(二)
Python基础编程——文件和异常
Python基础编程——测试代码