前面学习了Python爬取豆瓣电影Top250的数据,爬取的信息是电影信息的文本信息,但是在互联网上流行的图片才有更大的吸引力,本篇我们来使用python爬取网页上的图片并保存在本地硬盘上,很兴奋吧,Let's Go!
使用Python版本:3.7
第三方库
requests: 解析url (强大,你不得不用!)
beautifulsoup4:不会正则表达式童鞋的福音,可以容易的提取到html文件中各种标签及其属性
安装方法:
pip install requests
pip install beautifulsoup4
爬取目标网页:科比职业生涯高清图集 (来自百度网友分享)
https://baijiahao.baidu.com/s?id=1566820986637813&wfr=spider&for=pc
分析网页源代码:发现需要的内容都集中在class="article-content"的div标签中,而且需要的图片都集中在class="large"的img标签中
啥也不说了,直接上Python代码吧!
KobeForever.py
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# coding = utf-8
# 导入库 import os import requests from bs4 import BeautifulSoup # 要爬取的科比职业生涯高清图集URL url = 'https://baijiahao.baidu.com/s?id=1566820986637813&wfr=spider&for=pc' # 设置headers,网站会根据这个判断你的浏览器及操作系统,很多网站没有此信息可能将拒绝你访问 header = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 UBrowser/6.1.2107.204 Safari/537.36'} # 用get方法打开url并发送headers html = requests.get(url, headers = header) # 使用自带的html.parser解析,速度慢但通用 soup = BeautifulSoup(html.text, 'html.parser') # 打印结果 .text是打印出文本信息即源码 # print(html.text) # 所有的图片内容都包含在class=article-content的大div中 all_div = soup.find('div', class_ = 'article-content').find_all('div', class_ = 'img-container') # 但是,实际上我们仅仅需要class=large的img标签集合即可 all_img = soup.find_all('img', class_ = 'large') for img in all_img: src = img['src'] img_url = src # 打印出图片的地址 print(img_url) # 实际上,我们更希望保存在我们的电脑硬盘上 root = 'C:/KobeForever/' path = root + img_url.split('/')[-1] try: # 创建或判断路径图片是否存在并下载 if not os.path.exists(root): os.mkdir(root) if not os.path.exists(path): r = requests.get(img_url) with open(path, 'wb') as f: f.write(r.content) f.close() print("文件保存成功") else: print("文件已存在") except: print("爬取失败") |
运行起来吧,GO!
最后再来一张霸气的!