BeautifulSoup的基本使用

 

涉及到3个知识点

1、创建文件夹,如果没有文件夹则创建(exist_ok为True,False为有文件夹就不创建),(第8行)

2、requests请求,可以判断返回的状态码是否非200,如果非200,则报错(代码第10行)

3、现实运用中requests和BeautifulSoup这2个是连在一起用的,BeautifulSoup解析文件,基本是解析requsts的返回值,(代码第11hang)

4、图片文件如果要保存需要用二进制wb来保存到本地,且保存文件有2中方式

       1.for chunk in img_content.iter_content(100000):  #100000表示最多支持大小为十万字节的文件

                file.write(chunk)

       2.img_content = requests.get(real_url,verify=False).content #content转为二进制文件

                file.write(img_content)

 

# encoding: utf-8
import os
import requests
from bs4 import BeautifulSoup
import urllib3
urllib3.disable_warnings()

os.makedirs('image',exist_ok=True)
url = 'https://xkcd.com'

while not url.endswith("#"):
    res = requests.get(url, verify=False)
    res.raise_for_status() # 如果返回的状态码非200,则报错,因为可能返回302,401等之类的数据,html的数据就不是我们需要的
    soup = BeautifulSoup(res.text, 'html.parser')
    img = soup.select("#comic img")
    real_url = url + img[0].get("src")
    # img_content = requests.get(real_url,verify=False).content
    img_content = requests.get(real_url, verify=False)
    # print(type(img_content))

    filename = os.path.basename(real_url)
    path = 'C:/Users/Mloong/Desktop/高铁新增/pandadas/image' + '/' + filename

    with open(path, 'wb') as file:
        # file.write(img_content)
        for chunk in img_content.iter_content(100000):
            file.write(chunk)

    prev = soup.select("a[rel='prev']")[0]
    # print(prev.get('href'))
    url = 'http://xkcd.com' + prev.get('href')


# 保存图片有2种方法,一种通过request的contetnt (转为字节bytes,因为图片保存只能通过保存字节),一种通过request的iter_content也是bytes

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值