04
正则固定表
\d : 任何数字
\D : 不是数字
\s : 任何 white space, 如 [\t\n\r\f\v]
\S : 不是 white space
\w : 任何大小写字母, 数字和 _ [a-zA-Z0-9_]
\W : 不是 \w
\b : 空白字符 (只在某个字的开头或结尾)
\B : 空白字符 (不在某个字的开头或结尾)
\\ : 匹配 \
. : 匹配任何字符 (除了 \n)
^ : 匹配开头
$ : 匹配结尾
? : 前面的字符可有可无
* : 重复零次或多次
+ : 重复一次或多次
{n, m} : 重复 n 至 m 次
{n} : 重复 n 次
使用正则表达式
1)导入bs4、urllib、re(正则)
2)常规爬取时使用re
from bs4 import BeautifulSoup
from urllib.request import urlopen
import re
html = urlopen("https://mofanpy.com/static/scraping/table.html").read().decode('utf-8')
soup = BeautifulSoup(html,features='lxml')
img_links = soup.find_all('img',{"src":re.compile('.*?\.jpg')})
for link in img_links:
print(img_links)
print
结果
[<img src="/static/img/course_cover/tf.jpg"/>, <img src="/static/img/course_cover/rl.jpg"/>, <img src="/static/img/course_cover/scraping.jpg"/>]
观察静态html找规律爬取相关需要的信息
course_links = soup.find_all('a', {'href': re.compile('tutorials/*')})
for link in course_links:
print(course_links)
[<a href="/tutorials/data-manipulation/scraping/">爬虫教程</a>, <a href="/tutorials/machine-learning/tensorflow/">
Tensorflow 神经网络</a>, <a href="/tutorials/machine-learning/reinforcement-learning/">
强化学习</a>, <a href="/tutorials/data-manipulation/scraping/">
爬虫</a>]