python之路之python爬虫
来源:互联网 发布:临高启明知乎 编辑:程序博客网 时间:2024/04/30 07:57
简单图片爬虫过程:
一.将链接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等)
- Python爬虫之路
- python之路之python爬虫
- NLP之路-python爬虫
- python 爬虫之路教程
- Python爬虫之分布式爬虫
- Python之网络爬虫
- Python--之网络爬虫
- python之xpath爬虫
- python之文本爬虫
- python之爬虫框架
- python爬虫之BeautifulSoup
- python爬虫之lxml
- python爬虫之cookies
- Python爬虫之Pixiv
- python爬虫之-BeautifulSoup
- Python之网络爬虫
- python爬虫之图片下载
- Python爬虫之requests
- 以安装wordpress为例搭建apache+php+mysql的Web服务环境
- UIActionSheet+Blocks
- 菜鸟的学习之路(9) — ArrayList类
- android layout 布局
- 最大公约数和最小公倍数
- python之路之python爬虫
- HDU 1022 Train Problem I
- 黑马程序员--数组
- 中庸之道
- JAVA系列-设计模式-原型模式
- HTML5学习笔记之canvas绘制圆形
- 黑马程序员-java面向对象的一些问题
- UVA - 658 It's not a Bug, it's a Feature!
- java【源码】成绩管理系统