关于BeautifulSoup 和 re 的探讨

个人觉得使用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 ='''



'''

soup = BeautifulSoup (html, 'lxml')
div_text = soup.select('.heiheihaha')#class 用点号.代替 如果是id则用#号代替
print(div_text) #输出div下面的所有标签内容

>>>

[]

img_text = soup.select('.heiheihaha img') #输出div下的img里面的吗的内容,列表形式

print(img_text)

>>>

[]

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)

>>>[18岁以下禁止入内

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





转载于:https://www.cnblogs.com/Zhu-Xueming/p/8362188.html

你可能感兴趣的:(关于BeautifulSoup 和 re 的探讨)