paddle之《Python小白逆袭大神》小记(上)

paddle之《Python小白逆袭大神》小记(上)

第一次听说AI Studio上的课程是在去年冬天班主任老师为我们推荐的。然而当时考(lan)试(ai)太(fa)多(zuo) ,自己又是小白担心没有基础无法完成,所有无心去搞。这学期学院王老师又大力推鉴,也是想充实一下在家的生活吧,就报名参加了百度深度学习7日打卡第六期:Python小白逆袭大神的活动。

事实证明,我来对了。

Day-1:python基础练习

第一天的作业主要是关于python的基础操作,比较容易。
作业一:输出 9*9 乘法口诀表(注意格式)

def table():
    #在这里写下您的乘法口诀表代码吧!
    for i in range(1, 10):
        for j in range(1, i+1):
            k = i*j
            print(j, '*', i, '=', k, end = '\t')
            #print('%d * %d = %d '%(j,i, i*j),end='\t')
        print()

if __name__ == '__main__':
    table()

作业二:查找特定名称文件,遍历”Day1-homework”目录下文件,找到文件名包含“2020”的文件,将文件名保存到数组result中;

#导入OS模块
import os
#待搜索的目录路径
path = "Day1-homework"
#待搜索的名称
filename = "2020"
#定义保存结果的数组
result = []

def findfiles():
    #在这里写下您的查找文件代码吧!
    i = 0
    for root, dirs, files in os.walk(path):
    # root 表示当前正在访问的文件夹路径
    # dirs 表示该文件夹下的子目录名list
    # files 表示该文件夹下的文件list
    # 遍历文件
        for f in files:
            if filename in f:
                i += 1
                #连接路径
                f=os.path.join(root, f)  
                print(i,",'" ,f,"'", end = '\n')
                result.append(f)

if __name__ == '__main__':
    findfiles()

ps:思路都比较清晰,但是好久没有用python真的感觉生疏了…在学校写大作业用C++比较多,遇到for/if总想着加括号…还是短练啊。

Day-2:《青春有你2》选手信息爬取

感觉第二天作业难度陡然上升,利用爬虫爬取小姐姐的图片。虽然班主任在视频中具体讲解了爬取办法,总结一下分为以下几步:

  1. 了解网页:利用开发者工具查看需要的标签类别和名字。
  2. 利用requests库爬取网页信息
  3. 利用BeautifulSoup解析网页
  4. 组织数据

在对每位选手爬取图片的部分,老师给的参考代码如下:

#获取解析界面,拼接第一层链接:选手百度百科词条中的summary—pic
response=requests.get(link,headers=headers)
bs=BeautifulSoup(response.text,'lxml')
pic_list_url=bs.select('.summary-pic a')[0].get('href')
pic_list_url='https://baike.baidu.com'+pic_list_url

第一层链接爬取

#第二层链接:选手图册
pic_list_response=requests.get(pic_list_url,headers=headers)
bs=BeautifulSoup(pic_list_response.text,'lxml')
pic_list_html=bs.select('.pic-list img')
pic_urls=[]
for pic_html in pic_list_html:
	pic_url=pic_html.get('src')
	pic_urls.append(pic_url)

23333在这里插入图片描述

这样的做法简洁易懂,但是问题是,最终爬取的图片并不是原图,而是图片列表中的缩略图
于是在打卡群大海捞针找到了以下解法:

pic_urls = []
        
response = requests.get(url = link, headers = headers)
soup = BeautifulSoup(response.text, 'lxml')

href = 'https://baike.baidu.com' + soup.select('.summary-pic a')[0].get('href')
response = requests.get(href, headers = headers)
soup = BeautifulSoup(response.text, 'lxml')
div_target = soup.find('div', {'class':'pic-list'})
pic_list = div_target.find_all('a')
 
for pic in pic_list:
	try:
		pic_url = 'https://baike.baidu.com' + pic.attrs['href']
	except:
    	pass
    data = requests.get(pic_url, headers = headers)
    soup = BeautifulSoup(data.text, 'lxml')
    image_url = soup.find('img',{'id':'imgPicture'}).attrs['src']
    pic_urls.append(image_url)

然而,这样依然存在问题…

遇到的问题

这样的爬取方法最终获得的结果是490张图片!注意,先前的方法爬取了482张!归根结底,是因为王姝慧选手的图册第31-38张图片是动态渲染的,也就是说,30-38张使用的都是第30张图的url。
附上一位大佬的链接,较为详细的分析了这个问题:

Day-3《青春有你2》选手数据分析

第三天的任务是对《青春有你2》对选手体重分布进行可视化,绘制饼状图,相对比较容易,略去完整代码。

遇到的问题

  1. 可视化时汉字被方框替代
    解决方法有两种:重启系统和重新加载汉字…
  2. 图例的完整表示
#修改前
plt.legend(labels = ['选手数'])
#修改后
plt.legend(labels = ['选手数',])

左图为修改前,右图为修改后

未完待续

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值