IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> No.4 爬虫学习——数据解析之正则解析,以爬取糗图百科中图片为例 -> 正文阅读

[网络协议]No.4 爬虫学习——数据解析之正则解析,以爬取糗图百科中图片为例

1、聚焦爬虫:爬取页面中的指定内容。

—编码流程:

(1)指定url

(2)发起请求

(3)获取响应数据

(4)持久化存储

2、数据解析分类:

(1)正则

(2)bs4

(3)xpath(最通用)

3、数据解析原理概述:

(1)解析的局部的文本内容都会在标签之间或标签对应的属性中进行存储

(2)进行指定标签的定位

(3)标签或标签对应的属性中存储的数据值进行提取(解析)

4、需求:爬取嗅事百科中糗图版块下所有的糗图图片

#如何爬取图片数据

import requests
if _name_ == "_main_":
    url = '图片的链接'
    img_data = requests.get(url=url).content  #content返回的是二进制的图片的数据
    #text(字符串) content(二进制)  json()(对象)
    
    with open('./qiutu.jpg','wb') as fp:
        fp.write(img_data)

5、爬取一页的图片

import requests
import re
import os

 headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36 Edg/95.0.1020.44'}

if _name_ =="_main_":
    #创建一个文件夹,保存所有所有的图片
    if not os.path.exists('./qiutulibs'):
        os.madir('./qiutulibs')
    url = 'https://www.qiushibaike.com/'
   
    #使用通过爬虫对url对应的一整张页面进行爬取
   page.text = requests.get(url=url,headers=headers).text

    #拷贝源代码1如下图
    '''
    <div class="thumb">

    <a href="/article/124900379" target="_blank">
    <img            src="//pic.qiushibaike.com/system/pictures/12490/124900379/medium/2HCIRN0XD9TS                                AJKR.jpg" alt="糗事#124900379" class="illustration" width="100%" height="auto">
    </a>
    </div>
    '''
    #写上述正则表达式,使用聚焦爬虫将页面中所有的糗图进行解析/提取
    ex = '<div class="thumb">.*?<img src="(.*?)" alt.*?</div>'
    img_src_list = re.findall(ex,page_text,re.s)
    #print(img_src_list)

    #遍历图片列表
    for src in img_src_list:
        #拼接提出一个完整的图片url
        src = 'https:'+src
        #请求到了图片的二进制数据
        img_data = requests.get(url=src,headers=headers).content
        #生成图片名称  2用/来分割理由如下图
        img_name = src.split('/')[-1]
        #图片存储的路径
        imgPath = './qiutulibs/'+img_name
        with open(imgPath,'wb') as fp:
            fp.write(img_data)
            print(img_name,'下载成功!!!')

文中源代码1拷贝于下图黑色部分

?2用/分割

运行得出结果:

6、修改上面代码,实现多页图片的爬取

import requests
import re
import os

 headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36 Edg/95.0.1020.44'}


if _name_ =="_main_":
    #创建一个文件夹,保存所有所有的图片
    if not os.path.exists('./qiutulibs'):
        os.madir('./qiutulibs')
    #设置一个通用的url模板
    url = 'https://www.qiushibaike.com/8hr/page/%d/'
    pageNum = 2
    
    for pageNum in range(1,36):
        #对应页码的url
        new_url = format(url%pageNum)

       

        #使用通过爬虫对url对应的一整张页面进行爬取
       page_text = requests.get(url=new_url,headers=headers).text

        #拷贝源代码1如下图
        '''
        <div class="thumb">

        <a href="/article/124900379" target="_blank">
        <img                src="//pic.qiushibaike.com/system/pictures/12490/124900379/medium/2HCIRN0XD9TS                                AJKR.jpg" alt="糗事#124900379"     class="illustration" width="100%" height="auto">
        </a>
        </div>
        '''
        #写上述正则表达式,使用聚焦爬虫将页面中所有的糗图进行解析/提取
        ex = '<div class="thumb">.*?<img src="(.*?)" alt.*?</div>'
        img_src_list = re.findall(ex,page_text,re.s)
        #print(img_src_list)

        #遍历图片列表
        for src in img_src_list:
            #拼接提出一个完整的图片url
            src = 'https:'+src
            #请求到了图片的二进制数据
            img_data = requests.get(url=src,headers=headers).content
            #生成图片名称  2用/来分割理由如下图
            img_name = src.split('/')[-1]
            #图片存储的路径
            imgPath = './qiutulibs/'+img_name
            with open(imgPath,'wb') as fp:
            fp.write(img_data)
            print(img_name,'下载成功!!!')

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-11-15 16:11:28  更:2021-11-15 16:12:29 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年7日历 -2024/7/3 21:13:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码