python爬虫实战记录一

1.request库(安装,删除,常用方法)

2.BeautifulSoup库(安装)
Beautiful Soup将复杂HTML文档转换成一个复杂的树形结构,每个节点都是Python对象。所有对象可以归纳为4种类型: Tag , NavigableString , BeautifulSoup , Comment 。下面我们分别看看这四种类型都是什么东西。
在这里插入图片描述

3.解析器
https://blog.csdn.net/qq_33279781/article/details/52026806
在这里插入图片描述BeautifulSoup 库的使用(重点)

import requests #导入requests库
import lxml     #导入解析器
import  os    #  导入os模块
from bs4 import BeautifulSoup  #导入BeautifulSoup 模块




#   创建一个类,

class downPic() :
    # 初始化类
        def __init__(self):
            self.headers = {
                'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'}  # 给请求指定一个请求头来模拟chrome浏览器
            self.web_url = 'http://www.nipic.com'  # 要访问的网页地址
            self.folder_path = 'D:\downPic'  # 设置图片要存放的文件目录

    #   封装request请求
        def request(self, url):  # 返回网页的response
            r = requests.get(url, headers=self.headers)  # 像目标url地址发送get请求,返回一个response对象。有没有headers参数都可以。
            return r

    # 这个函数创建文件夹
        def mkdir(self, path):
            path = path.strip()
            isExists = os.path.exists(path)
            if not isExists:
                print('创建名字叫做', path, '的文件夹')
                os.makedirs(path)
                print('创建成功!')
            else:
                print(path, '文件夹已经存在了,不再创建')

        # 保存图片IO读取保存图片
        def save_img(self, url, name):
            print('开始请求图片地址,过程会有点长...')
            img = self.request(url)
            file_name = name + '.jpg'
            print('开始保存图片')
            # 打开文件 打开模式为ab以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入
            f = open(file_name, 'ab')
            f.write(img.content)
            print(file_name, '图片保存成功!')
            f.close()

        def get_fileName(self, url):
            #   http://static.nipic.com/images/police.png
            path = url#  将url转换为字符串类型操作
            filename = path.split('/')[-1]# police.png
            try:
                filename = filename.split('.')[0]# police
            except:
                pass
            return filename



         #  工具方法都已经准备完毕,开始我们的逻辑部分
        def get_pic(self):
            #   使用request获取目标网页
            r = requests.get(self.web_url)
            #   抓取图片   将request抓取到的html页面 r.text转换成对象, lxml是解析器  html.parser
            all_a = BeautifulSoup(r.text, 'lxml').find_all('img')  # 获取网页中的所有img表情
            #   有了这些图片的url,就可以通过继续发请求的方式获取图片啦。接下来我们先来封装一下发请求的代码。
            for a in all_a:
                #  print(a['src'])  # 循环打印图片地址
                print('开始创建文件夹')
                self.mkdir(self.folder_path)  # 创建文件夹
                print('开始切换文件夹')
                os.chdir(self.folder_path)  # 切换路径至上面创建的文件夹
                img_name = self.get_fileName(a['src'])
                #调用save_img方法来保存图片
                self.save_img(a['src'], img_name) ;

beauty = downPic()  #创建类的实例
beauty.get_pic()  #执行类中的方法

在这里插入图片描述
成功,这里只能获取到网站的内容是静态加载的内容,动态加载获取不到哦,下一步就是解决这个问题.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值