Python爬虫一直是很多朋友感兴趣的话题,也是自动化技术必备的技能。
今天下班的时候老板给小王交代了一个任务:整理外汇实时牌价打印出来。
小王忙着参加朋友聚会,女朋友已经在楼下等着了...
心里着急,毕竟刚入职又不敢抗议,怎么办呢?
幸好,小王电脑有现成的Python爬虫程序,抓取网站实时外汇牌价就是一秒钟的事情。
来看看小王的代码,先导入库:
from urllib.request import urlopen
from bs4 import BeautifulSoup
读取目标网页的数据:
r = urlopen('http://www.boc.cn/sourcedb/whpj').read()
# 读取网页信息获得字节流
运行后得到的一串看不懂的字符:
里面有很多网页的原代码,我们需要调用BeautifulSoup库来美化一下这些数据,增加一行代码:
r = BeautifulSoup(r, features='lxml') # 美化读取的信息
print(r)
运行:
这下,有点网页基础的朋友大体能看懂了,不过离我们想要的结果还有点远。
我们打开网页原代码查看,发现数据都包含在<table>标签里面:
增加以下代码:
r = r.find_all('table')[1] # 读取table内需要的内容
print(r)
注意,[1]表示该网页的第二个<table>标签,以此类推,运行:
渐入佳境,对不对?离我们想要的结果越来越近了。我们只要取得<tr>标签里面的数据,就算大功告成,继续添加代码:
r = r.find_all('tr') # 取得tr标签内的内容
print(r)
得到结果:
显然,红色的框内不是我们想要的内容,黄色的框里面才是我们想要的。添加代码删除第一个内容:
r.pop(0) # 删除数组的第一个表头内容
print(r)
结果:
以下都是我们想要的数据了,现在需要一个循环语句把这些数据提取出来就可以:
for i in r:
all_td = i.find_all('td') # 通过循环找到td标签的内容
print(f'{all_td[0].text} 卖出价:{all_td[4].text} 买入价:{all_td[2].text}')
# 逐行打印读取到的内容
通过循环读取<td>标签里面的内容,去除文字内容用.text方法:
是不是很简单?全部代码如下:
from urllib.request import urlopen
from bs4 import BeautifulSoup
r = urlopen('http://www.boc.cn/sourcedb/whpj').read() # 读取网页信息获得字节流
r = BeautifulSoup(r, features='lxml') # 美化读取的信息
r = r.find_all('table')[1] # 读取table内需要的内容
r = r.find_all('tr') # 取得tr标签内的内容
r.pop(0) # 删除数组的第一个表头内容
for i in r:
all_td = i.find_all('td') # 通过循环找到td标签的内容
print(f'{all_td[0].text} 卖出价:{all_td[4].text} 买入价:{all_td[2].text}') # 逐行打印读取到的内容
pass
剩下的事情就是将这些数据写入一个文本文档或者Excel文件发微信。
下班,88...
记得收藏起来,说不定哪天你就能用上!
Python经验分享
学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
Python学习路线
这里把Python常用的技术点做了整理,有各个领域的知识点汇总,可以按照上面的知识点找对应的学习资源。
学习软件
Python常用的开发软件,会给大家节省很多时间。
学习视频
编程学习一定要多多看视频,书籍和视频结合起来学习才能事半功倍。
100道练习题
实战案例
光学理论是没用的,学习编程切忌纸上谈兵,一定要动手实操,将自己学到的知识运用到实际当中。
最后祝大家天天进步!!
上面这份完整版的Python全套学习资料已经上传至CSDN官方,朋友如果需要可以直接微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】。