2021-03-19 爬虫(中)
4.2 文档的搜索
##文档的搜索
#1 find_all()
#字符串过滤:会查找和字符串完全匹配的内容,例如abc标签则不会被搜索到
t_list=bs.find_all('a')
print(t_list)
import re
#正则表达式搜索:使用search方法来匹配内容,可以显示所有包含a的
t_list=bs.find_all(re.compile('a'))
print(t_list)
##放入:传入一个(函数)方法,根据函数的要求来搜索
def name_is_exists(tag):
return tag.has_attr('name')
t_list=bs.find_all(name_is_exists)
print(t_list)
for item in t_list:
print(item)
#2 kwargs 参数
t_list=bs.find_all(id='head')
t_list=bs.find_all(class_=True)
for item in t_list:
print(item)
#3 文本参数
t_list=bs.find_all('hao123')
t_list=bs.find_all(['hao123',"地图","贴吧"])
t_list=bs.find_all(text=re.compile('\d'))#用正则表达式找出所有含数字(特定文本)的字符串,\d表示数字
for item in t_list:
print(item)
# 4 limit参数
t_list=bs.find_all('a',limit=3)#可以限定搜索到的个数
for item in t_list:
print(item)
#css选择器
t_list=bs.select('title')#按照标签查找
t_list=bs.select('.mnav')#按照类名查找
t_list=bs.select('#u1') #按id查找
t_list=bs.select("a[class="bri"]")#通过属性查找
t_list=bs.select('head>title') #通过子标签查找
t_list=bs.select(".mnav~.bri")
print(t_list[0].get_text())
for item in t_list:
print(item)
5、正则表达式
5.1正则表达式的基本规则
cr:https://www.bilibili.com/video/BV12E411A7ZQ?p=22
5.2 正则表达式的例子
import re
pat=re.compile('AA')#此处的AA是正则表达式,用来验证其它字符串
m=pat.search('CBA')
print(m)
None
import re
pat=re.compile('AA')#此处的AA是正则表达式,用来验证其它字符串
m=pat.search('ABCAA')
print(m)
<re.Match object; span=(3, 5), match='AA'>
import re
pat=re.compile('AA')#此处的AA是正则表达式,用来验证其它字符串
m=pat.search('ABCAABCAAAA')
print(m)
<re.Match object; span=(3, 5), match='AA'>
search只能找到第一个符合条件的
m=re.search('asd',"basd")#前面的是模板,后面的是被检测的对象
print(m)
<re.Match object; span=(1, 4), match='asd'>
print(re.findall('a',"abcba"))#前面的是模板,后面的是被检测的对象
['a', 'a']
print(re.sub('a','A','abcda'))#在第三个字符串查找,用A替换a
AbcdA
建议加r防止被转义
明天学习正则提取。