个人觉得使用BeautifulSoup匹配网页标签内容比re更容易一些,re的规则比较多而且有些使用方法比较难,很容易匹配不到
而soup方法在处理网页标签就特别容易,这和urllib.request.urlopen()和request.get()一样,后者要容易一些:
1.re 正则表达式
编译模式:这个匹配模式多次被使用
content = ‘who is xxoo.jpg, maybe shanpao is xxoo.jpg ‘
reg = re.compile(r‘xxoo\.jpg‘)
p = re.search(reg, content)#search只匹配最前匹配的那个 match则是匹配开头,findall匹配全部返回一个列表
print(p.group())#取得匹配对象
>>>xxoo.jpg
非编译模式:直接写在括号里
content = ‘who is xxoo.jpg, maybe shanpao is xxoo.jpg ‘
p = re.search(r‘xxoo\.jpg‘, content)#search只匹配最前匹配的那个 match则是匹配开头,findall匹配全部返回一个列表,带括号的匹配括号里面的
print(p.group())#取得匹配对象
>>>xxoo.jpg
2.soup模式
html =‘‘‘
<body>
<div class = ‘heiheihaha‘>
<img id = ‘xx‘ src = ‘www.xxoo.jpg‘ />
<a href = ‘www.xxoo.com‘>18岁以下禁止入内</a>
</div>
</body>
‘‘‘
soup = BeautifulSoup (html, ‘lxml‘)
div_text = soup.select(‘.heiheihaha‘)#class 用点号.代替 如果是id则用#号代替
print(div_text) #输出div下面的所有标签内容
>>>
[<div class="heiheihaha"> <img id="xx" src="www.xxoo.jpg"/> <a href="www.xxoo.com">18岁以下禁止入内</a> </div>]
img_text = soup.select(‘.heiheihaha img‘) #输出div下的img里面的吗的内容,列表形式
print(img_text)
>>>
[<img id="xx" src="www.xxoo.jpg"/>]
img_text = soup.select(‘.heiheihaha img‘)
print(img_text[0][‘src‘]) #解析列表获取里面的src的值。一般为图片路径
>>>www.xxoo.jpg
a_text = soup.select(‘.heiheihaha a‘) #获取 div下的a标签
print(a_text)
>>>[<a href="www.xxoo.com">18岁以下禁止入内</a>]
a_text = soup.select(‘.heiheihaha a‘)
print(a_text[0].text) #获取啊标签下的值
>>>18岁以下禁止入内
a_text = soup.select(‘.heiheihaha a‘)
print(a_text[0][‘href‘]) #获取啊标签的链接
>>>www.xxoo.com