飞桨笔记-深度学习7日打卡营Day02心得
woohore 发布于2020-04 浏览:1078 回复:3
1
收藏

20200423,参加百度飞桨深度学习7日打卡营第六期,Day2-深度学习实践平台与Python进阶。

今天课程比第一天的难度略高,主要讲的是网页数据爬取(百度百科中《青春有你2》选手的图片及其url),并结合昨天所学把爬取的文件名列出。

网页数据爬取主要用到了requests和BeautifulSoup两个库,前者用于发送http请求获取网页内容,后者可将获取的html内容解析后保存目标数据,代码如下:

resp = requests.get(link, headers = headers)
bs = BeautifulSoup(resp.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_resp = requests.get(pic_list_url, headers = headers)
bs = BeautifulSoup(pic_list_resp.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)

pic_urls是所有选手的图片,之后用以下代码将图片保存在本地:

for i, pic_url in enumerate(pic_urls):
   try:
        pic = requests.get(pic_url, timeout=15)
        string = str(i + 1) + '.jpg'
        with open(path+string, 'wb') as f:
            f.write(pic.content)
            print('成功下载第%s张图片: %s' % (str(i + 1), str(pic_url)))
    except Exception as e:
        print('下载第%s张图片时失败: %s' % (str(i + 1), str(pic_url)))
        print(e)
        continue

做完作业检查结果的时候,发现爬取的图片有很多是缩略图,再查源网页可见大图是通过Javascript动态加载的,requests不支持,要用requests_html,以后有时间了用新包优化一下。

收藏
点赞
1
个赞
共3条回复 最后由用户已被禁言回复于2022-04
#4woohore回复于2020-04

来来来,互粉互粉 ^o^

0
#3189******30回复于2020-04

动态加载的是不好爬

1
#2自尊心3回复于2020-04

不错不错,学习一下

1
TOP
切换版块