iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python爬虫之解析库正则表达式
  • 285
分享到

python爬虫之解析库正则表达式

爬虫正则表达式python 2023-01-30 23:01:57 285人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

   上次说到了requests库的获取,然而这只是开始,你获取了网页的源代码,但是这并不是我们的目的,我们的目的是解析链接里面的信息,比如各种属性  @href  @class span  抑或是p节点里面的文本内容,但是我们需要一种工

   上次说到了requests库的获取,然而这只是开始,你获取了网页的源代码,但是这并不是我们的目的,我们的目的是解析链接里面的信息,比如各种属性  @href  @class span  抑或是p节点里面的文本内容,但是我们需要一种工具来帮我们寻找出这些节点,总不能让我们自己一个一个复制粘贴来完成吧,那样的话,还要程序员干嘛>>计算机是为了方便人们才被发明出来的.

  这次我们使用一个非常好用的工具>>正则表达式,可能有的大佬已经听说过了,哦,就是那么一个东西,并说,不是用CSS选择器或者xpath,beautifulsoup来解析不是更好吗?当然,我开始的时候也是听大佬们这么说的,但是再一些简单的提取信息里,正则表达式的速度确实是最快的,而且有相同的结构的话,构造的表达式更快,关于正则表达式详解大家可以去百度一下>>正则表达式详解<<那里有更多的使用方法,我只是总结利用了一些我个人认为比较好用的正则表达式用法.

 例如我们获取了以下的一个网页源代码:

 

 我们想要获取br节点里面的IP地址,怎么办呢/我们可以构造表达式   首先我们得了解一下元字符:

  这里说明了匹配得用法,\w就是匹配除了非字符的,例如空格 , $%^.!@#这些全部别省略而过,因为不符合匹配规则,想要匹配空格,就要换成\s  这里我们再了解一下限定符的概念:

  限定符的意思根据我的理解是匹配该符合匹配规则的次数,如果没有要求,它可能匹配出全部给你,也可能只匹配第一个结果给你,限定符就起到了匹配次数的效果,让你做到想使用匹配规则多少次就多少次.下面是一些常用的正则表达式:

 

 

   可能大家看的有些疑惑,那是因为你之前没有接触过表达式,但是你参照一下上面的规则,再参悟一下,多尝试匹配,看看错在哪里,大概坚持一两天,你就会有一种豁然开朗的感觉,哦,原来是这么一回事啊,我理解一下一个规则用法,比如用户名的匹配规则:<<   /^是匹配的开始  然后到[a-z0-9  是说匹配从a到z和0到9的所有字符,然后是_-,,它说明在里面可以匹配下划线_和字符- ,{3,16}是匹配从3次到16次,意思是说该用户可能限制在3到16字节,超过就没有意义了,多了就会导致提取信息的不纯洁性了>>  当然有时候我们想偷懒怎么办,这些规则有太复杂了,光是构造就得花费很多时间了,这时候,我最喜欢得懒惰限定符出现了,先看规则:

 

       这里可以这样理解 (.*)是匹配尽可能多的字符串,(.*?)是匹配尽可能匹配少的字符   在python中()表示返回匹配得内容,内容为()里面得字符,如果你想获取@href的属性,直接构造为('.*?href="(.*?)" ,h.*?')就可以获取href的属性了,不过要记住,它返回的是一个列表的形式,所以你想要实现分行显示,还要对列表进行遍历,输入到文本中,继而实现简单的爬取信息.演示如下:

 

 我把我自己写的源代码贴出来,可能不是很完善,只是一个很简单的函数,哪里有缺陷大佬们指出一下

# -*- coding: utf-8 -*-
# author :HXM
from lxml import etree
import requests
import re
from fake_useragent import UserAgent
def page():
        
        ua=UserAgent()

        url=input("请输入代理网页:")
        #https://proxy.horocn.com/day-free-proxy/e8ZG.html

        headers={'User-Agent' : ua.random}

        response=requests.get(url,headers=headers)

        if response.status_code==200:
        
                datas=response.text

                pattern=re.compile('.*?<br />(.*?)#.*?<br />',re.S)#re.S表示换行匹配,不受行数限制,Python常用pattern来封装表达式规则,极大方便了调用

                result=re.findall(pattern,datas)

                print(type(result))

                for results in result:

                        with open ("ip.txt","a",encoding="utf-8") as f:
                                
                                f.write("{}\n".fORMat(results))
        return None
page()

 

  这里还要说一个重要的匹配方式,是python中独有的

  import re  #表示导入正则表达式

  re.match表示是从第一字符开始匹配,如果规则没有从第一个字符开始表示,尽管你想要的信息就在HTML里面,你也匹配不出来

  re.search表示只匹配符合规则的第一字符并返回结果,对匹配限定符规则是无效的,即不遵守限定匹配次数

  re.findall表示匹配所有符合规则的字符,遵守限定次数规则,最常用的匹配re库函数

   好了,正则表达式就介绍到这里,不过这只是皮毛而已,不过对我们目前应该是够用的,后面还有零断宽言等,大家有兴趣可以了解一下>

 

--结束END--

本文标题: python爬虫之解析库正则表达式

本文链接: https://www.lsjlt.com/news/181416.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python爬虫之解析库正则表达式
       上次说到了requests库的获取,然而这只是开始,你获取了网页的源代码,但是这并不是我们的目的,我们的目的是解析链接里面的信息,比如各种属性  @href  @class span  抑或是p节点里面的文本内容,但是我们需要一种工...
    99+
    2023-01-30
    爬虫 正则表达式 python
  • 爬虫之正则表达式
    1.学习爬虫,为什么必须会正则表达式?    我们爬取一些网页具体内容时,只需要这个网页某个标签的一部分内容就足够,或者是这个标签的某个属性的值时,用普通的 xpath 或者css.selector是不能完成的,此时我们就需用到正则表达式...
    99+
    2023-01-30
    爬虫 正则表达式
  • Python爬虫之正则表达式(1)
    廖雪峰正则表达式学习笔记 1:用\d可以匹配一个数字;用\w可以匹配一个字母或数字; '00\d' 可以匹配‘007’,但是无法匹配‘00A’; ‘\d\d\d’可以匹配‘010’; ‘\w\w\d’可以匹配‘py3’; 2...
    99+
    2023-01-30
    爬虫 正则表达式 Python
  • Python爬虫正则表达式怎么理解
    本篇内容介绍了“Python爬虫正则表达式怎么理解”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!元字符^ $ * + . | {} [] ...
    99+
    2023-06-17
  • Pyhton爬虫知识之正则表达式详解
    目录前言1、正则表达式基础2、正则表达式的基本符号2.1 点号 “.”2.2 星号 “*”2.3 问号 “”2...
    99+
    2024-04-02
  • python网络爬虫精解之正则表达式的使用说明
    目录一、常见的匹配规则二、常见的匹配方法1、match()2、search()3、findall()4、sub()5、compile()一、常见的匹配规则 二、常见的匹配方法 1、...
    99+
    2024-04-02
  • 8.网络爬虫—正则表达式RE实战
    8.网络爬虫—正则表达式RE实战 正则表达式(Regular Expression)re.Ire.Are.Sre.Mre.Xre.Lre.U美某杰实战写入csv文件: 前言:...
    99+
    2023-09-07
    正则表达式 爬虫 python
  • Golang爬虫及正则表达式的实现示例
    目录字符 数量限定 其他 爬虫 补充:正则表达式加golang爬虫爬取经典案例豆瓣top250最近学习go,爬取网站数据用到正则表达式,做个总结; Go中正则表达式采用RE2语法(具...
    99+
    2024-04-02
  • Python全栈之正则表达式
    目录1. 正则表达式_匹配单个字符2. 正则表达式_匹配多个字符3. 正则表达式_匹配分组小提示:4. 小练习答案:总结1. 正则表达式_匹配单个字符 正则表达式在线测试: http...
    99+
    2024-04-02
  • python进阶之正则表达式
    概念:   正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。 目的?       给定一个正则表达式和另一个字符串,我...
    99+
    2023-01-30
    进阶 正则表达式 python
  • Python 正则表达式详解
    目录1.正则表达式是什么2.1用正则表达式2.2匹配原理2.3常用函数总结1.正则表达式是什么 很简单就是一种字符串匹配,eg: 比如你在注册账户时我们需要对用户的用户名判断是否合法...
    99+
    2024-04-02
  • python正则表达式
    笔记:一:简介 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。 主要介绍Python中常用的正则表达式处理函数 提高工作效率,完成内置函数无法完成的任务! 搜索常用正则表达式!-...
    99+
    2023-01-30
    正则表达式 python
  • python 正则表达式
    正则表达式的作用:用来匹配字符串 一、字符串方法 字符串提供的方法是完全匹配,不能进行模糊匹配 s = 'hello world' # 字符串提供的方法是完全匹配,不能进行模糊匹配 print(s.find('ll')) # 2 ...
    99+
    2023-01-30
    正则表达式 python
  • 浅析正则表达式
    所谓的正则表达式,就是用一类元字符(不表示本身意义,而表示统配或其他意义),组 合其他字符所编数出来的,能够匹配符合条件的字符。  正则表达式有基本正则表达式和扩展正则表达...
    99+
    2022-11-15
    正则表达式
  • python模块之re(正则表达式)
    匹配模式 re.ASCII同re.A,对应的内联标识为(a),用于向后兼容。使元字符\w, \W, \b, \B, \d, \D, \s和\S仅匹配ASCII字符。该模式只在string模式下有意义,在byte模式下将被忽略。 re.DE...
    99+
    2023-01-31
    模块 正则表达式 python
  • python--模块之re正则表达式
    简介: 正则表达式本身是一个小型的、高度专业化的编程语言,而在python中,通过内嵌集成re模块,我们可以通过直接调用来实现正则匹配。 正则表达式基础知识: --普通字符匹配自身 abc ----abc --元字符 . :匹...
    99+
    2023-01-30
    模块 正则表达式 python
  • 怎么分析Python网络爬虫四大选择器正则表达式、BS4、Xpath、CSS
    怎么分析Python网络爬虫四大选择器正则表达式、BS4、Xpath、CSS,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。今天小编来给大家总结一下这四个选择器,让大家更加深刻的...
    99+
    2023-06-04
  • Python中使用正则表达式及正则表达式匹配规则详解
    目录1 导库2 使用模板3 说明4 示例5 正则表达式匹配规则1 导库 import re 2 使用模板 re_pattern = re.compile(pattern, flags...
    99+
    2023-03-22
    Python正则表达式匹配规则 Python正则表达式
  • Python正则表达式实例分析
    这篇“Python正则表达式实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python正则表达式实例分析”文章吧。一...
    99+
    2023-06-29
  • python正则表达式最详解
    目录一、正则表达式–元字符1.数量词2.字符匹配3.边界匹配4.组5.匹配模式参数二、方法re.findallre.matchgroup匹配对象re.searchre.compile...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作