您的位置:首页 > 编程语言 > Python开发

【Python3.6爬虫学习记录】(三)简单的爬虫实践-豆瓣《河神》演员图片及姓名

2017-08-12 21:03 961 查看
前言:将之前的爬取图片和文字简单的应用了一下,期间遇到一些问题,主要是因为之前只是简单的学习了Python,导致一些语法,不过关。但是,解决了问题之后,还是比较兴奋的。

代码及注释:

# 爬取豆瓣河神演员照片
from bs4 import BeautifulSoup
import requests
import lxml
import re

url = 'https://movie.douban.com/subject/26776350/celebrities'
html = requests.get(url).content
soup = BeautifulSoup(html,'lxml')

#用class搜索,由于是python的关键词,所以要用下划线
imgs = soup.find_all(class_="avatar")
names = soup.find_all('a',href=re.compile("celebrity"),class_="name")

i = 0
print('开始下载')
for img in imgs:
img_url = img['style']
#利用切片获得图片网址
img_content=img_url.split('(')[1].split(')')[0]
try:
print('下载第%s张图片'%i)
with open('河神\\'+str(names[i].string)+'.jpg','wb') as f:
#将获得图片网址转换成二进制编码
f.write(requests.get(img_content).content)
i+=1
except Exception:
print('出现错误')

print('下载完成')


相关问题:

①BeautifulSoup的应用

按标签属性搜索,如标签名,标签中某些内容用正则表达式re进行匹配。以及用class搜索的注意点

#用class搜索,由于是python的关键词,所以要用下划线
imgs = soup.find_all(class_="avatar")
names = soup.find_all('a',href=re.compile("celebrity"),class_="name")


②spllit的应用

为了提取标签内容中图片网址和姓名



处理办法:

#利用切片获得图片网址
img_content=img_url.split('(')[1].split(')')[0]


得到的网址是utf-8编码的,保存到文件中需要转码

#将获得图片网址转换成二进制编码
f.write(requests.get(img_content).content)


③小处理技巧

用中括号及标签内部属性名获得该属性

#<.......style="background-image: url(https://img3.doubanio.com/img/celebrity/medium/39105.jpg)".....>
img_url = img['style']
#img_url=background-image: url(https://img3.doubanio.com/img/celebrity/medium/39105.jpg)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python 爬虫 图片 豆瓣