十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
form bs4 import BeautifulSoup
要导入bs4模块
注意BeautifulSoup大小写
soup = BeautifulSoup('html','html.parser')
第一个参数html为要解析的html文档,html是字符串
网站建设哪家好,找创新互联!专注于网页设计、网站建设、微信开发、微信小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了叙永免费建站欢迎大家使用!
解析到soup中后才可以开始使用
soup中用的比较多的方法为find_all()
用法有:
soup.find_all('a')//找出所有的a标签中的内容,返回的是一个数组,数组中的每个元素又是BeautifulSoup对象
find_all()中还可以加属性查询,如:soup.findall('a',class=''),如果有多个,可以soup.findall('a',class=['c1','c2']),class_中的内容为样式,只要查找的内容中有其中一个样式就行
如:
s = '''aaaaaaa
'''
这里面的都可以找出来
还有一种写法:
soup.find_all('a',attrs={'class':re.compile('')}),使用正则表达式,
拿到查找内容后,如果要解析标签中的内容
find_all()要循环取
假设拿到其中一个,以a标签为例
拿到的a1 = ''
拿链接:href = a1['href']
拿标签中的内容:content = a1.string
BeautifulSoup中还有find方法,用法与find_all()一样,只是该方法只取第一个符合条件的
注:如果标签不是成对的,如:
此时,你用find('img')是拿不到img标签的,你需要取到他的上级成对标签span
然后在解析span标签中的内容,如
span = soup.find('span'),假设拿到的是''
此时你需要解析他的子标签,使用children属性
span.children
此时返回的结果是list_itrator对象,要么使用for循环去取,没试过,要么使用next(list_itrator)取,可以拿到第一个子标签
然后拿到src的值:src = next(list_itrator)['src']
当然如果标签是成对的,直接使用find('img')
注:
使用BeautifulSoup,以后所有返回带有标签内容的对象都是BeautifulSoup对象(个人理解)
如果要分析的内容太多,可以将需要的字符串内容截取到合适的地方,因为BeautifulSoup解析实在是太耗时间了,虽然方便