百度飞浆Python小白逆袭大神打卡课程心得分享-《青春有你2》选手信息爬取
在一次聊天中,不经意听某人说百度飞浆有免费的人工智能课程,免费的数据集,免费的计算资源,免费的教师天团(百度工程师+中科院天团),还有奶凶奶凶的班主任。因为我是个小白,碰巧这期就是为小白而设的逆袭大神打卡课程,为期7天,5个作业。说真的,第一次上这类课,感觉难度还是有的。但是不得不称赞一下 百度,真正的大厂担当,咱们这种凡人小白,别说懂不懂算法,就是数据集和计算资源就够脑袋大了,这些在百度AI Studio竟然都为我们解决了,还有技术大咖直播讲课。所以想学习人工智能的小伙伴真的可以关注,这种大厂的工程师和中科院天团讲课,真不是哪里都有。所以感谢百度,感谢老师,感谢班主任!
这期学习的作业有5个,难度一次递增,由于水平问题,这里我挑了一个比较简单的和大家分享。这是我们DAY2的作业《青春有你2》选手信息爬取。我觉得这个内容对我蛮有帮助的,咱们在学习深度学习的时候,总需要用到数据,这个爬虫就可以很好的帮助咱们获取想要的数据资源。闲话少说,下面开始分享。
作业说明
成《青春有你2》选手图片爬取,将爬取图片进行保存,保证代码正常运行及打印爬取的所有图片的绝对路径,以及爬取的图片总数。
爬虫的过程,就是模仿浏览器的行为,往目标站点发送请求,接收服务器的响应数据,提取需要的信息,并进行保存的过程。
Python为爬虫的实现提供了工具:requests模块、BeautifulSoup库
任务描述
本次实践使用Python来爬取百度百科中《青春有你2》所有参赛选手的信息。
数据获取:https://baike.baidu.com/item/青春有你第二季
这里说一下上网的全过程和爬虫的过程
- 普通用户:
打开浏览器 --> 往目标站点发送请求 --> 接收响应数据 --> 渲染到页面上。
- 爬虫程序:
模拟浏览器 --> 往目标站点发送请求 --> 接收响应数据 --> 提取有用的数据 --> 保存到本地/数据库。
爬虫的过程:
-
爬虫的过程:
(1)发送请求(requests模块)
(2)获取响应数据(服务器返回)
(3)解析并提取数据(BeautifulSoup查找或者re正则)
(4)保存数据 -
使用到的模块
(1)request模块: -
requests是python实现的简单易用的HTTP库,官网地址:http://cn.python-requests.org/zh_CN/latest/
-
requests.get(url)可以发送一个http get请求,返回服务器响应内容。
(2)BeautifulSoup库: -
BeautifulSoup
是一个可以从HTML或XML文件中提取数据的Python库。网址:https://beautifulsoup.readthedocs.io/zh_CN/v4.4.0/ -
BeautifulSoup支持Python标准库中的HTML解析器,还支持一些第三方的解析器,其中一个是 lxml。
-
BeautifulSoup(markup, “html.parser”)或者BeautifulSoup(markup,
“lxml”),推荐使用lxml作为解析器,因为效率更高。
一、爬取百度百科中《青春有你2》中所有参赛选手信息,返回页面数据
import json
import re
import requests
import datetime
from bs4 import BeautifulSoup
import os
#获取当天的日期,并进行格式化,用于后面文件命名,格式:20200420
today = datetime.date.today().strftime('%Y%m%d')
def crawl_wiki_data():
"""
爬取百度百科中《青春有你2》中参赛选手信息,返回html
"""
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'
}
url='https://baike.baidu.com/item/青春有你第二季'
try:
response = requests.get(url,headers=headers)
print(response.status_code)
#将一段文档传入BeautifulSoup的构造方法,就能得到一个文档的对象, 可以传入一段字符串
soup = BeautifulSoup(response.text,'lxml')
#返回的是class为table-view log-set-param的<table>所有标签
tables = soup.find_all('table',{
'class':'table-view log-set-param'})
crawl_table_title = "参赛学员"
for table in tables:
#对当前节点前面的标签和字符