最近身边朋友都在讨论股市是不是牛市要来了吧?
如果想自己做一个股市收盘价前三十名的涨跌幅度,又不用每天去点击网页浏览,用Python写个爬虫程序来做是不是超棒der
环境建置
安装Python
安装PyCharm
建立专案
开启PyCharm,点击创建新项目
输入项目名称,点击创建
安装图书馆
撰写爬虫程序前,需要先安装以下
beautifulsoup
请求
在PyCharm上方工具列选择
点击顶部选单的项目:[PROJECT_NAME]→项目解释器→点击底部的+
分别输入beautifulsoup4,requests,进行下载安装
美丽的汤4
取得网页内容
首先,开启Chrome浏览器,针对目标网页中我们要抓取的内容点击快捷→检查
新增python档案
输入以下程式,取得目标网页的内容
从bs4导入BeautifulSoup
导入请求
c_money ='https
://www.cmoney.tw/finance/f00062.aspx'res = requests.get(c_money)
print(res.text)
疑问?为什么回来的内容和在网页中看到的原始码不一样?
那就表示网页的内容可能是透过Javascript程序执行之后再将内容显示。
因此,我们要改变一下程式写法,加入request-html
输入以下程式,重新取得网页内容
从request_html导入HTMLSession
导入请求
c_money ='https
://www.cmoney.tw/finance/f00062.aspx'session = HTMLSession()
resp = session.get(c_money)
resp.html.render()
print(resp.html .html)
如果遇到SyntaxError:语法无效的问题,将python版本提升至3.6版以上就可以啰。
但!
就是这个但是,总是会遇到意外发生,已经做了render还是取不到内容,那就对程式再做一些小改造,加入一些参数至render,例如:
resp.html.render(睡眠= 1,向下滚动= 1,等待= 0.2)
嘿嘿,取得的网页内容已经和浏览器内容一样了。
解析网页
还记得刚刚浏览的原始码吗?内容依据表格的方式呈现
随后安装Pandas这个强大的图书馆来进行资料检索取
将程式加入以下写法
c_money_html = resp.html.html
data_frame = pandas.read_html(c_money_html)
打印(data_frame)
喔喔喔喔喔!结果出现啦~~~随后就可以将资料储存至资料库当中做后续的运作。
也可以将结果转换为JSON文本
data_frame = pandas.read_html(c_money_html)
用于data_frame 中的数据:
json_text = data。to_json()
总结
基本上安装其中的图书馆几乎可以应付所有的网页进行资料撷取。
beautifulsoup
请求-html
请求
熊猫
如果有其他更好的爬虫方式,不妨一起交流交流吧〜