重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
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解析实在是太耗时间了,虽然方便
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。