python爬虫-数据解析(正则)

python爬虫-数据解析(正则)

python爬虫-数据解析(正则)

正则解析案例–爬取糗事百科的图片

糗事百科URL
https://www.qiushibaike.com/imgrank/page/2/

在这里插入图片描述
查看网页源代码,发现图片储存的地址

import requests
import re
import os


if __name__ == '__main__':
    headers = {
   
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36'
    }
    #判断是否存在qiushi文件夹,如果不存在就创建一个
    if not os.path.exists('./qiushi'):
        os.mkdir('./qiushi')
        
    url = 'https://www.qiushibaike.com/imgrank/page/%d/'
    for pageNum in range(1,3):
        new_url = format(url%pageNum)
		#通用爬虫请求页面数据
        gate_text = requests.get(url=new_url,headers=headers).text
        
        ex = '<div class="thumb">.*?<img src="(.*?)" alt=.*?</div>'
        #正则匹配,匹配出图片地址
        ex_data = re.findall(ex,gate_text,re.S)
        
        for src in ex_data:
        	#拼接出完整的图片URL
            src = 'https:'+src
            #请求图片二进制数据
            img_data = requests.get(url=src,headers=headers).content
            img_name = src.split('/')[-1]
            img_path = './qiushi/' + img_name
            #创建并写入图片二进制数据
            with open(img_path,'wb') as fp:
                fp.write(img_data)
                print(img_name,'success!!')

爬取结果
在这里插入图片描述
练习

https://pic.netbian.com/4kmeinv/

这里是引用

import re
import requests
import os

if __name__ == '__main__':
    if not os.path.exists('./meinv'):
        os.mkdir('./meinv')

    url = 'https://pic.netbian.com/4kmeinv/'

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

    page_text = requests.get(url=url,headers=headers).text
    ex = '<li><a href=".*?target=".*?<img src="(.*?)" alt=.*?</a></li>'
    ex_data = re.findall(ex,page_text,re.S)
    for src in ex_data:
        src = 'https://pic.netbian.com/'+src
        img_data = requests.get(url=src,headers=headers).content
        img_name = src.split('/')[-1]
        img_path = './meinv/' + img_name
        with open(img_path, 'wb') as fp:
            fp.write(img_data)
            print(img_name, 'success!!')


结果
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/100112.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 深入理解Java虚拟机–javac命令[通俗易懂]

    深入理解Java虚拟机–javac命令[通俗易懂]目录指定编译源文件命令选项非标准选项-Xjavac命令用于将.java源文件编译成.class字节码文件,在windows命令行中使用”javac-help”命令查看其用法:语法格式:javac<options><sourcefiles>options#命令行选项,可指定多个…

    2022年5月28日
    40
  • Android TextView两端对齐、文本两端对齐

    Android TextView两端对齐、文本两端对齐如题 在开发中 经常会用到比如说类似于表格的排版 效果图 这样的效果 谷歌也没给出这样效果的方法 网上查也没找到实现方法 然后想 中间用空格填充呢 试试 然后写了几个 TextView 对比一下 如下 放大效果 可以看出 不能完美对齐 这肯定不是想要的效果 然后就发现了两个占字符来实现 nbsp 他们与汉字换算关系就是 1 个汉字 4 个

    2025年11月5日
    1
  • rocketmq启动报错VM warning: INFO: OS::commit_memory(0x00000006c0000000, 2147483648, 0) faild

    rocketmq启动报错VM warning: INFO: OS::commit_memory(0x00000006c0000000, 2147483648, 0) faild解决方案:修改/RocketMQ/devnev/bin/下的服务启动脚本runserver.sh、runbroker.sh中对于内存的限制,​改一下内存大小就行了:JAVA_OPT=”${JAVA_OPT}-server-Xms128m-Xmx128m-Xmn128m-XX:PermSize=128m-XX:MaxPermSize=128m”…

    2022年5月14日
    46
  • redis安装菜鸟教程_redis集群客户端

    redis安装菜鸟教程_redis集群客户端随笔-848文章-0评论-80阅读-278万转载:windows下安装redis及其客户端-Oops!#-博客园windows下安装redis及其客户端首先下载redis安装包:https://github.com/MSOpenTech/redis/releases解压安装包到相应文件夹,任何盘符都行。文件介绍:redis-server.exe:服务端程序,提供redis服务redis-cli.exe:客户端程序,通过它连接redis服务并…

    2022年9月18日
    3
  • java之葵花宝典

    java之葵花宝典importjava util Arrays importjava util Scanner author 男神许老师 2020 年 1 月 1 日 classStudent publicintage publicString publicStuden System ou

    2025年9月18日
    3
  • 点击下拉菜单打开option中value的链接

    点击下拉菜单打开option中value的链接

    2022年2月19日
    46

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号