2021-05-11

爬虫学习:

爬取站长素材里的图片


requests包的用法:

1、 requests包的用法
requests.content      # 以字节流形式打印

2、time包用法

time.sleep()   # 可以设置休眠时间,避免被屏蔽Ip

代码:

注意: 出现乱码时,一定要注意原网页的编码方式,网页是utf-8,resp.encoding就等于utf-8,如果是gbk那么resp.encoding就等于gbk
# 1.拿到主页面的源代码,然后提取到子页面的链接地址,href
# 2.通过href拿到子页面的内容,从子页面下找到图片的下载地址 img—>src
# 3.下载图片
import requests
import time
from bs4 import BeautifulSoup

s = "http:"
url = "https://sc.chinaz.com/tupian/rentiyishu.html"
resp = requests.get(url)  # 请求URL
resp.encoding = 'utf-8'   # 处理乱码

main_page = BeautifulSoup(resp.text, "html.parser")
# 声明是html.parser,防止警告,resp.txt保存主页面源码
alist = main_page.find("div", class_="clearfix psdk imgload").find_all("a")
# 第一次缩小范围
# div标签下class=clearfix psdk imgload,且搜索所有的a标签

for a in alist:                             # 通过循环读取alist里的链接
    href = a.get("href")                    # get()获取href属性里的值
    href = s + href                         # 由于拿到的链接是缺少http:,所以字符串添加http:

    child_page_resp = requests.get(href)    # 获取子页面的源码
    child_page_resp.encoding = 'utf-8'      # 去除乱码
    child_page_text = child_page_resp.text  # 保存子页面源码
    # 从子页面获取下载路径
    child_page = BeautifulSoup(child_page_text, "html.parser")
    p = child_page.find("div", class_="imga")
    # 检索标签为div,class=imga的数据
    img = p.find("img")                     # 查找标签img的数据

    src = img.get("src")                    # 获取img标签里src的值
    src = s + src
    img_resp = requests.get(src)            # 获取图片链接
    img_name = src.split("/")[-1]  
    # 设置名字,利用split()方法以/分割,拿到URL最后一个\以后的内容
    with open("D:\\笔记本\\爬虫图片\\" + img_name, mode="wb") as f:
        f.write(img_resp.content)           # 保存img_resp的字节
    print("over!!!", img_name)
    time.sleep(1)                           # 设置休息时间为一秒

print("all over!!!")


问题与解决办法:

1、 获取到主页面的源码后获取子页面报错提示

requests.exceptions.MissingSchema:无效URL“//sc.chinaz.com/tupian/2105100477
# 解决办法:
     #发现是在主页面的源码中子页面的链接缺少http:,于是我定义一个字符串,然后将http:与获取到的子页面链接拼接在一起,成功解决

2、寻找网页的子页面链接的时候要进行查找时只要找到对应的类名和需要的标签即可,再通过get()方法得到标签里属性的值

    p = child_page.find("div", class_="imga")
    # 检索标签为div,class=imga的数据
    img = p.find("img")                     # 查找标签img的数据

    src = img.get("src")                    # 获取img标签里src的值
    src = s + src
    img_resp = requests.get(src)            # 获取图片链接

站长素材子页面源码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值