0
点赞
收藏
分享

微信扫一扫

百度Aistudio飞桨七日游体验python爬虫和分析数据


前言

在某天,老妹给我发了一个截图,百度飞桨举办小白入门到大神的python,而且还有奖品。最近玩拼多多的多多消游戏第133关卡了一个星期废话(建议体验  前期智商碾压游戏 后期靠游戏眷顾) ,回归主题,肤浅

背景

本人将近3年的纯C后端开发者,大学期间的比较重大的毕设项目。(C#,JAVAEE,MATLAB,C++)这些语言前二者有B/S的web开发工程,MATLAB是毕设带UI工程(其中运用到百度api的tts<吐槽一下,当年还是看网友才知道那个平台,当年百度搜索云平台开发排得老后面了>+本地微软tts库),C++界面的就是那个课设的三维镂垫。这四个的巅峰状况都在大学时代,现在基本忘了,设计界面和图像的基本没怎么涉猎。

资源

中文的找文档 英文的找documentattion(格式怎么调的距离这么宽,我也不知道为什么这样子)

百度AIstudio ​​https://aistudio.baidu.com/aistudio/index​​

matplotlib   ​​https://matplotlib.org/index.html​​

飞桨官网 ​​https://www.paddlepaddle.org.cn/​​  

飞桨github ​​https://github.com/paddlepaddle/paddle​​

python体验

针对这门语言,结合自己的经验,基本也是属于有个通性概念,入手来说基本逻辑基本一致。设计的数据结构比较特殊。和matlab相比类型多,设计到计算的话需要许多方法和转换,对于英语差的而且python初步接触的需要各种涉猎相关方法。通过块对齐,退格设置这类型检查严格,冒号使用,经常性被遗忘,携带参数可以有个前面的标签指[命名关键字参数]。简单说,一门语言要用得好,先把基础掌握好。掌握不好的我,在完成此活动的作业,连加减都要百度一下类型变换和使用。总结<基础不好> 等于 <类型难点,变换难点,获取难点,计算难点>

Aistudio体验

由于我是没有设置相关的本地python环境的,因此直接在改平台上面编码,操作相对简单,涉及的可能最多的是网络问题,本地掉线。上传文件功能和下载也很简便-拖拉-窗口均支持。在一次网速差的情况下,我先使用的是火狐的进行上传,短的上传成功4MB左右的失败,需要提一下的是,我该电脑的火狐可能是3年前的版本了。十几次失败后,我改成360浏览器上传,浏览器自己和对端通讯,最终成功。因此,如果遇到网速问题,可以看看换换大文件有没有其他版本较好的且策略更好的浏览器尝试。对于Aistudio,他有设计到词语联想之类的,关键字也是都有提醒,上面还有linux终端可操作。由于网络问题(这估计是我住的地段问题,公司的网络也是迷之龟速)或者我这台10年之久的老设备问题,会有linux终端卡主的现象,有我这种问题,建议在前面创建文本,shell类型的加个感叹号,操作相对快速。

该平台在载入中文相关的.ttf,经过停止重启,相关的数据有恢复正常。

七日体验所得

除了以上涉及前端经验,我可以说没怎么涉猎html javascript。这7日中有共5份的作业任务。

在day1简单类型操作后,在day2通过简单的跟着直播学习研究分析html标签进而设计抓取条件,这对我来说是第一次体验爬虫的系列操作,这次在此七日中,这份数据是个开端。相对来说是学习工具的简单实用(就是依样画葫芦,难的:师傅领进门,修行靠个人)

day3是在二的基础上进行相关的数据分析,以及相关图表的制作,数据分析就涉及到我这python小白的盲区了,有种东西叫做直播中都讲过numpy和dataframe,但是我的脑袋没有记住,于是消耗了大量的时间在搜索类型转换和统计方法。另一个图表绘制即matplotlib 这个官网样例相当齐全,鉴于我毕设有matlab的语谱图绘制经验,相对来说难度较少,但是如果要更高端的,肯定要啃文档了。这里给个我利用官网的两个柱上增加数字的例子day5的例子

def drawcounts(counts,topN):
'''
绘制词频统计表
参数 counts: 词频统计结果 num:绘制topN
return:none
'''

iterms=list(counts.items())
iterms.sort(key=lambda x:x[1],reverse=True)

#上面的代码我其实还不是很懂,是csdn找到的反正就是排序
#函数sort我认识,那个lamdba还不懂

if len(iterms)>topN:
endnum=topN
else:
endnum=len(iterms)
#print(iterms)
#显示matplotlib生成的图形
x_list=[]
y_list=[]
%matplotlib inline
for i in range(endnum):
x,y = iterms[i]
x_list.append(x)
y_list.append(y)

print(x_list)
print(y_list)
# 设置显示中文

plt.rcParams['font.sans-serif'] = ['SimHei'] # 指定默认字体

plt.figure(figsize=(10,6))
fig2,ax=plt.subplots(figsize=(10,6))

rects=plt.bar(range(len(y_list)),y_list,0.6,color='r',tick_label=x_list,facecolor='#9999ff',edgecolor='white')
plt.xlabel("/词语",fontsize=12)
plt.ylabel("/个数",fontsize=12)
# 这里是调节横坐标的倾斜度,rotation是度数,以及设置刻度字体大小
plt.xticks(rotation=45,fontsize=12)
plt.yticks(fontsize=12)

#ax.legend()
##绘制柱状上数字
def autolabel(rects):
for rect in rects:
h=rect.get_height()
ax.annotate('{}'.format(h),
xy=(rect.get_x()+rect.get_width()/2,h),
xytext=(0,3),
textcoords="offset points",
ha='center',va='bottom')

autolabel(rects)
plt.title('''词频统计图''',fontsize = 24)
plt.savefig('/home/aistudio/work/cicicicici.jpg')
#看着这个函数是把图和柱子紧密结合,取消变成一个画布两张图
fig2.tight_layout()
plt.show()
print(x_list)
return

day4 根据人脸图像训练,以构建识别模型,开始懵懵懂懂的,作为数据集的图片我是手动截图的,尝试使用的是通过-数据集-利用模型训练,再有一个-验证集 测试集,标签即模型实现目标。四种输入数据,这些当前为学习应用为主。

day5大作业,爱奇艺的评论爬虫,这里是带有javascript触发的爬虫分析,一个Get方法去掉jsonp_xxx()这个是其他人说的,这个对我没有接触过这个类型的还是知识盲区。以防图片问题,这里记录下相关只是要点。

jsonp跨域问题。
jsonp_xxx后面xxx为随机生成的。
[Browser:script]--GET xx?xxx&callback=jsonfun-->[Server]
[Browser:script]<--jsonfun({...}) -[Server]
[Browser:script use jsonfun({...})]

百度Aistudio飞桨七日游体验python爬虫和分析数据_json

有点高点的爬虫。我404了一整天(除去白天上班),我就不明白浏览器可以爬下来,我带入代码怎么就不行了。后来我用了浏览器的请求头才可以。对比了一下,发现访问首页的Host不一样,这个Host是http的协议里面有写的。以前有浏览过http的RFC文档,类型重定向。更深层次的暂时没有了解。"keep-alive\r\n"这个我以前研究libghttp里面有看过,在libghttp里面如果接收到"Connection: close\r\n",链路会掐断无应答了。写博文弄完发现这里当时还涉及另一个问题,就是续行符号 反斜杠'\',由于拼接的那个GET请求串太长,然后我使用续行符了,错误退格失败。续航符使用的话要顶格。如果使用多行的串连接就要严格python的退格处理的。初级使用者各种违法语法规则操作。

headers = { 
'Host': 'sns-comment.iqiyi.com',
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; rv:75.0) Gecko/20100101 Firefox/75.0',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
'Accept-Encoding': 'gzip, deflate, br',
'Connection': 'keep-alive',
'Upgrade-Insecure-Requests': '1' }

 针对正则表达式,他们和各种编码、协议、字符集和语言是一个大家族。前不久我工作遇到ascii(0)用法,这个应该是C语言和这类型的有区别的c语言单引号为一个char因此单引号'\0'位空;二双引号位串"\000"这个时候就要解释三个零的第一个为八进制的意思。目前遇到的shell脚本语言类型的使用的是串"\000";

#正则表达式子
#在很多的语言中这个单个字匹配的基本符合这个框
#C语言也有,C语言高端用法可学习sscanf()的匹配
#这里面涉及到一个知识要点'\001'是由0开头的,因此为8进制,'\x20'为x开头的因此为十六进制
#但是C中的十六进制有范围限制,具体的我还没有懂
s=re.sub('[\001-\x20]','',s)

在此次大作业中还有分词jieba 、词频统计、以及绘制词云wordcloud,paddlehub语义分析之类的。由于有直播中讲的和示范,基本算是比较轻松的,奈何遇到敲代码敲错词,然后各类函数还不熟悉的,遇到一对报错,比如image打错Imag等,打字出错徒增难度。

感受:学习一门新语言,实践是比较有用的,阅读源码也是提升知识的途径,在没有低级错误的时候,使用还是相对方便的。7天大部分白天上班,晚上看直播做作业。整个阶段还是非常紧张的。尤其是遇到工作项目遇到未知BUG还是非常烦躁的,还好后面都找到原因。话说拼多多的113关运气的过了哈哈哈。以后想可能会再看看尝试python和这些库其他算法的应用。但是基础我还要先掌握好,不然一个矩阵转置都要查一下单词。这影响我的应用技术。

 

 

举报

相关推荐

0 条评论