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

前言:将之前的爬取图片和文字简单的应用了一下,期间遇到一些问题,主要是因为之前只是简单的学习了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)
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值