七天虽短,但是在知识迅速增加的今天显得十分必要。七天的课程总体来说,阶段性的进步让我们有机会在短时间内接触到先进的知识体系。这离不开百度paddlepaddle的努力,课程阶梯难度的设置效果很好,作业反馈体系也很充分,主教班班老师都是超级好(吹爆xxxxxxxxxxx)。Paddle-hub的推出真的让我感觉paddle很有希望。
给后来者的建议是:看直播紧跟老师的脚步,多看群里讨论,充分利用paddle给的demo资源,有时候做一下代码的搬运工的确是可以提高效率。实战就是实战,不是考验你是否能自己写出来。而是看你如何利用别人的成果改善后创新。
总述一下7天课程的流程:
python基础,python爬虫基础爬取选手信息,matplotlib对爬取的数据进行分布上的可视化,paddlehub自制数据集选手分类,大作业完成评论内容的分析、绘制词云、审核内容。虽然是阶梯性的进步,但是有个小的建议给paddle:可以适当延长下训练营的周期(不过感觉7天很合适,可以考虑难度分级)。其实感觉如果完全没基础的话7天打卡很难跟下来。
之后话不多说,进行技术内容上的分析。
技术内容分析: Day1个人认为就是扫盲,剔除完全不想学习一门新语言的同学。但也考验一部分细节吧,或者根本称不上细节的基本操作。没什么好讲,直接上代码。
def table():
#在这里写下您的乘法口诀表代码吧!
for i in range(0, 10):
for j in range(1, i+1):
print('{}*{}={:<4}'.format(j, i, i*j), end='')
print('')
if __name__ == '__main__':
table()
#导入OS模块
import os
#待搜索的目录路径
path = "Day1-homework"
#待搜索的名称
filename = "2020"
#定义保存结果的数组
result = []
def findfiles():
#在这里写下您的查找文件代码吧!
for relpath, dirs, files in os.walk(path):
for name in files:
if filename in name:
full_path = os.path.join(relpath, name)
result.append(full_path)
for i in range(0, len(result)):
print([i+1, result[i]])
if __name__ == '__main__':
findfiles()
Day2
爬虫基本的操作,requests,BeautifuSoup,感觉模式性都十分强,直接套用模板即可。之前在群里看到有人爬了2万多张,有点可笑。当然本人第一次也是这种傻,本质上就是没有清空你保存图片链接的列表,仅此而已。要弄清楚是根据每个明星生成的链接的列表,生成完直接下载,下载完到下一个明星时记得清空就好。上代码:
def crawl_pic_urls():
'''
爬取每个选手的百度百科图片,并保存
'''
with open('work/'+ today + '.json', 'r', encoding='UTF-8') as file:
json_array = json.loads(file.read())
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'
}
count=0
for star in json_array:
pic_urls=[]
name = star['name']
link = star['link']
#!!!请在以下完成对每个选手图片的爬取,将所有图片url存储在一个列表pic_urls中!!!
response = requests.get(link, headers=headers) # 使用headers避免访问受限
soup = BeautifulSoup(response.content, 'lxml')
tables=soup.find_all('div',class_="summary-pic")
#print(tables)
for table in tables:
Ahref=table.a['href']
album_url='https://baike.baidu.com'+Ahref
response = requests.get(album_url, headers=headers)
soup = BeautifulSoup(response.content, 'lxml')
pic_div=soup.find('div',class_="pic-list")
img_album=pic_div.find_all('img')
for img in img_album:
pic_urls.append(img['src'])
#!!!根据图片链接列表pic_urls, 下载所有图片,保存在以name命名的文件夹中!!!
down_pic(name,pic_urls)
Day3
任务就是画出体重分布的饼图,前三天我也没看视频,都是自己上网找找文档和现成的代码。“我们不做代码的生产者,我们是代码的搬运工”说的就是我,毕竟有学校任务压在头上,不能只顾这边。建议就是:大概理解为什么这么些,具体细节看文档,一定要学会看文档!贴代码:
%matplotlib inline
with open('data/data31557/20200422.json', 'r', encoding='UTF-8') as file:
json_array = json.loads(file.read())
countA=countB=countC=countD=0
for star in json_array:
weight=star['weight']
weight=int(weight[0:2])
if weight in range(30,46):
countA+=1;
elif weight in range(46,51):
countB+=1;
elif weight in range(51,56):
countC+=1;
else:
countD+=1;
weight_list=[countA,countB,countC,countD]
labels=['55']
colors=['green','orange','blue','red']
plt.pie(weight_list,labels=labels,colors=colors,
labeldistance = 1.1,autopct = '%3.1f%%',shadow = False,
startangle = 90,pctdistance = 0.6)
plt.axis('equal')
这里插一句:每天学的真的是会作用到最后一天的大作业,尤其是今天的matplotlib中文字体的调整,最后一天的第一道坎就是这样,卡住了不少人。但是好多人不知道解决方法就在第三天写好的代码里面。用这些虚拟环境和别人写好的,不要无脑的运行,好歹看一下做了什么,有个印象。
Day4就是paddlehub的简单应用,教你自定义数据集。这种预训练好的模型其实非常适合我们非研究型人员使用,提高了效率,减少了计算资源的消耗。Paddle也明白,这是生态上的构建,这几天使用modelarts和hilens那边的实现也发现生态是个大问题,需要多少人员一点点地构建,我们这些使用者也终将有一天将要成为生态构筑的一员。话这么多是因为day4我觉得不需要贴代码。用来填充字数(手动狗头)。
Day5终于来到了过五关斩六将的终极超级无敌大作业。简单来讲就是把前几天所学综合,说是综合,还是让你把不同模块写出来,然后拼接一下就好。这里详细分析一下:
任务分解:爬取评论、清理数据、分词、词频统计、绘制词云、内容审查。
难点一、matplotlib中文字体
之前说了,解法就在day3藏着(明白着放着),看你是不是无脑了。我做的时候就直接把字体文件复制到matplot里面的ttf文件结束(具体看报错然后百度)。
(一种报错)
爆出上面的错误,请仔细读下,发现这个路径没有字体,所以解决方案就是直接喂给它。
# 将字体文件复制到matplotlib字体路径
!cp simhei.ttf /opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/mpl-data/fonts/ttf/
难点二、如何找评论接口、更新lastID多次请求评论
承认本人之前也不会,老师教了一个很好的方法:F12里面
原创文章 2获赞 11访问量 302
关注
私信
展开阅读全文
作者:·空感自诩”