python之路之python爬虫

简单图片爬虫过程:

一.将链接url源码读出,将其作为列表输出

二.使用正则表达式将源码中有关图片的源码筛选出来,(*.jpg文件)

三.在输出的过程中按照自己的方式命名

这里边唯一的难点恐怕是正则表达式的书写,下面我们初步系统的讲解一下正则表达式:

前面有一讲专门介绍了正则表达式 具体可以查看链接,这里只进行一些重要的补充。

\b:

正则表达式元字符。\b只匹配一个位置,并不匹配空格、标点符号/换行符中的一个,这里使用正则表达式在线测试工具进行验证(以下同样)


如上,\b可以控制开头和结尾,这种可以用来匹配整个单词而不只是其中的一部分

虽然之前的正则表达式已经描述,这里在熟悉一下:‘.’匹配除了换行符的任意字符,注意不包含换行符,‘*’也是元字符,它代表的既不是字符也不是位置,而是数量

因此.*意味着任意数量的不包含换行的字符,如上\bhi\b.*\blucy\b,这里表示开头为hi,结尾为lucy,中间为任意多个字符(可以没有)

总结:

+:重复一次或更多次

?:重复0次或者一次

{n}:重复n次

{n,}:重复n次或更多次

{n,m}:重复n到m次

如上可以看出?和[]\d{}等的用法,但是也可以看出这种电话号码匹配是有问题的(半括号也可以匹配成功)

分支条件:

是指n种方式并列,从左向右进行匹配,当第一种情况不匹配成功时就匹配第二种,,使用'|'符号,以此类推

如上是两种情况,一种是有括号的一种是没有括号的,但是注意以下特别情况:

\d{5}-\d{4}|\d{5}

\d{5}|\d{5}-\d{4}

如上两个匹配的过程是不同的,如果是前者,先匹配约束强的,如果不能匹配,才进入\d{5}。但是后者相反,因此一般情况下我们采用前者

分组技术:

如上可以将分组重复3次,非常有用的功能,但是如上如果是ip地址的正则匹配的话对于256.300.888.999也是会被匹配的到的,正确的操作应该是:

这个分组分为三种情况:第一个是2[0-4]\d、25[0-5]和[01]?\d\d?。这三部分分别对应了ip地址的三种合理情况。

匹配最少重复:

正则表达式的特点是贪心法的思想,即通常的行为是匹配尽可能多的字符,如a.*b,它将会匹配最长的以a开头以b结尾的字符串。如aabab则会匹配出aabab

那么如何匹配尽可能少的字符呢:

答案是使用.*?,如下:

他会匹配aab和ab,注意第一个为什么不匹配ab呢?因为正则表达式中最先开始的匹配有最高的优先级。

总结:

*?重复任意次,但尽可能少重复

+?重复一次或多次,但尽可能少重复

??重复0次或1次,但尽可能少重复

{n,m}?重复n次到m次,但尽可能少重复

注释:

?#comment

2[0-4]\d(?#200-249)|25[0-5](?#250-255)|[01]?\d\d?(?#0-199)

后向引用:

如上\1表示分组内的项,两个完整的单词中间夹着空白字符即可(空白字符可以是空格、tab等)





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值