这一次的爬虫,目标:
找出中国的企业,爬他们的电话号码,邮件,公司名称。
发现这里面需要正则表达式,好把。
python爬虫入门-正则表达式入门
思考一下有哪些需要的知识
- BeautifulSoup库的学习
- 正则表达式的学习
自己已经爬了一个数据库,以上知识是必须需要的。写到这,想到要学的东西何其多也,包括如何利用api。基本看了一下,需要的是,json. 继续爬基础吧。
第一个字符
\b : 元字符 (位置号)
匹配单词的位置: 不代表字符
如去文章中去找到hi。
>>>我们的原文章,可以是 hi! this is a hillo. hi
wat! hill,thil , a
>>> hi
>>> hi
文章内容有点乱,主要目的是,找到hi.
第二、三个字符
. 这个代表不包括换行符的任意字符。 (字符号)
* 这个代表位置,代表任意位置 (位置号)
第四个字符
/d : 代表数字,(字符号)
如匹配021-51877320
0/d{2}-/d{8}
{}:重复几次
更多的字符号
/w : 匹配字符,字母,下划线 (字符号)
/s: 代表空白字符 (字符号)
更多的位置号
^ : 匹配字符串的开始
$ : 匹配字符串的结束
重复
* : 匹配任意位置,0次或者多次
+ : 匹配1次或者多次
? : 匹配0次或者1次
{n,m} :重复n到m次。
查找没有预定义的字符
什么叫预定义符号?
比如我要去查找 cat, 但是你如果模糊查询,hat,或者cat,怎么办呢,[]这就是你会用到的。
[ac]: a 或者 c
[0-9]: 0到9
例子:匹配:(010)88886666,或022-22334455,或02912345678
提示用?
那么:这样来表示:
\(0?\d{2}[) -]?\d{8}
- 转义字符( 代表(
- (? 代表可能出现0次或者1次。
- \d{3} 数字重复3次
- [} -]: 代表模糊,),或者- ,或者空格。
- [) -]? :代表可能0次或者1次。
但是可能会出现的情况吗? (01088886666,如果是这样怎么办呢?
分支 ( 或)
使用我们程序见到的|,或来避免。
(0d{2})?[- ]?\d{8}|\0d{2}[- ]?d{8}
分组()
基本上我们的第一阶段,扫盲就要结束了, 后面就是慢慢基础补充了。最好看一下分组的意思吧。
() 比如,讲表达式分组。
192.168.001.002
- step1: d{1,3} 为什么不是d{3},000和0 的意思啊。
- step2: d{1,3}/. 匹配:192.
- step3: (d{1,3}/.){3} 重复192.168.1.
- step4: (d{1,3}/.){3}/d{1,3} : 明白了吗
但是以上会出现256.311.871.921 情况, 我们知道ip地址不能超过255,这样的情况怎么办呢?
- step1: ( /.){3}
- step2: 2[0-4]\d|25[0-5]|[01]?/d/d? (可能只是1位数)
- step3:(2[0-4]\d|25[0-5]|[01]?/d/d?/.){3}(2[0-4]\d|25[0-5]|[01]?/d/d?)
网友评论