小白在看了很多Python教程之后,觉得是时候做点什么小项目来练练书了
于是东找西找,找到了一个结合爬虫的绘图的小项目,虽然是小项目,但是毕竟我是个小白啊,所以还是踩了坑,调了bug
代码如下:
from urllib import urlopen
#urllib 是一个爬虫的库
from reportlab.graphics.shapes import *
#reportlab是一个绘图的库
from reportlab.graphics.charts.lineplots import LinePlot
from reportlab.graphics.charts.textlabels import Label
from reportlab.graphics import renderPDF
URL = 'http://services.swpc.noaa.gov/text/predicted-sunspot-radio-flux.txt'
#网址是一个预测气温的TXT
COMMENT_CHARS = '#:'
drawing = Drawing(400, 200)
data = []
for line in urlopen(URL).readlines():
if not line.isspace() and not line[0] in COMMENT_CHARS:
data.append([float(n) for n in line.split()])
pred = [row[2] for row in data]
high = [row[3] for row in data]
low = [row[4] for row in data]
times = [row[0] + row[1]/12.0 for row in data]
#主要包括四个维度的数据,预测值,最高值、最低值、时间
lp = LinePlot()
lp.x = 50
lp.y = 50
lp.height = 125
lp.width = 300
#设置图的一些关于长、宽、高的属性
lp.data = [zip(times, pred),zip(times,high),zip(times, low)]
#这里用zip 函数将时间分别于预测值、最高值、最低值组合起来
lp.lines[0].strokeColor = colors.blue
lp.lines[1].strokeColor = colors.red
lp.lines[2].strokeColor = colors.green
#分别用蓝色、红色、绿色表示预测值、最高值、最低值
drawing.add(lp)
drawing.add(String(250,150, 'Sunspots',fontSize=14,fillColor=colors.red))
#在250,150 的位置显示一个字号为14,颜色为红色的,Sunspots
renderPDF.drawToFile(drawing, 'report3.pdf','Sunspots')
#将画好的图片保存为PDF,存在代码的相同目录下
在完成这段代码的过程中踩的坑有:
1.reportlab库没有安装,no moudle for reportlab
解决方案:在anacoda 命令行里输入pip install reportlab ,联网之后即可安装完成
2.找到的代码,原来的网址显示404
解决方案:404下面告诉我们网站地址修改了,在百度里又找到了新的网址,在网址里又找到了新的数据,新的txt,但是新的txt里数据的维数不对,月份是用英文表示的,又提示不能由字符转换float,又重新找了一个txt,数据终于对的上了,于是终于可以看到图片了,好欣慰。
这个故事告诉我们:菜鸟也可以改一下代码,做出来点东西的,继续加油!!