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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • jetty和tomcat性能比较_tomcat启动jar包

    jetty和tomcat性能比较_tomcat启动jar包相同点1.tomcat与jetty都是一种servlet引擎,他们都支持标准的servlet规范和javaEE规范不同点1.架构比较jetty相比tomcat更为简单jetty架构是基于Handler来实现的,主要的扩展功能都可以用Handler来实现,扩展简单tomcat的框架是基于容量设计的,进行扩展是需要了解tomcat的整体设计结构,不易扩展2.性能比较

    2025年8月3日
    2
  • 无法解析外部符号

    无法解析外部符号本人在写qt工程的时候遇到无法解析外部符号原因:只写了类声明,但还没有写实现类,造成调用时无法解析。解决方法,把还没有实现类的声明给注释掉。参考博客无法解析的外部符号考虑可能的原因:[0]出现无法解析可能是因为lib文件不正确,比如64位的编译配置,结果使用的是32位的lib包.[1]只写了类声明,但还没有写实现类,造成调用时无法解析[2]声明和定义没有统一,造成链接不一致,无法

    2022年6月28日
    24
  • 像素密度计算

    像素密度计算为解决Android设备碎片化,引入一个概念density,也就是密度.它指的是在一定尺寸的物理屏幕上显示像素的数量,一般使用dpi(dotsperinch,每英寸像素数)作为单位.比如设备分辨率为240×320,屏幕物理尺寸为1.5英寸x2英寸(对角线为2.5),它的密度可以用分辨率/尺寸表示:240/1.5或者即320/2,密度为160dpi。算对角线也是一样的,长的平方+宽的平…

    2022年6月13日
    60
  • win10 tomcat闪退[通俗易懂]

    win10 tomcat闪退[通俗易懂]1.环境变量配置CLASSPATH:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;%CATALINA_HOME%\lib\servlet-api.jar;%TOMCAT_HOME%\BIN Path:E:\mysql-5.6.39-winx64\bin;C:\ProgramData\Oracle\Java\javapath;%JAVA_HOME%\bin;…

    2022年5月29日
    34
  • 设置虚拟机桥接模式以及解决桥接模式上不了网以及ping不通主机的问题[通俗易懂]

    设置虚拟机桥接模式以及解决桥接模式上不了网以及ping不通主机的问题[通俗易懂]一.VMware设置桥接模式1.VMware-&gt;编辑-&gt;虚拟网络编辑器-&gt;更改设置选择VMnet0(桥接模式),选择与主机同名网卡 ,主机可在在网络中心查看网卡名称2.设置桥接模式 选择桥接模式 二.解决上不了网的问题0、在vmware虚拟机中:vmnet0对应桥接模式;vmnet1对应NAT模式;vmnet8对应仅主机模式。安…

    2022年4月30日
    560
  • Java葵花宝典(一)

    Java葵花宝典(一)1.面向对象和面向过程的区别面向过程:是以事件为中心,按照我们编写的代码,根据完成步骤的过程来执行的优点:面向过程性能比面向对象高。因为类调用时需要实例化,开销比较大,比较消耗资源,所以当性能是最重要考量的因素的时候,比如单片机开发,嵌入式开发,Linux一般采用面向过程开发缺点:没有面向对象易维护、易复用、易扩展面向对象:将事物高度抽象化,我们把要完成的功能高度抽象成一个个对象,调用对象的方法或者属性来完成所需功能优点:易维护、易复用、易扩展。因为面向对象有封装、继承、多态的特性,所以可以设计

    2022年7月8日
    38

发表回复

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

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