小白,BeautifulSoup初步整理,后续添加
admin
2023-07-21 06:42:15
0

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解析实在是太耗时间了,虽然方便

相关内容

热门资讯

伊朗谈判代表团已抵达瑞士,专机... 当地时间6月20日晚,伊朗谈判代表团抵达瑞士苏黎世,准备与美国在比尔根山进行会谈。据伊朗媒体报道,代...
美财长被曝曾对泽连斯基爆粗口,... 由《纽约时报》记者玛吉·哈伯曼和乔纳森·斯旺撰写的《政权更迭》一书爆料,美国财政部长贝森特曾建议特朗...
美国芝加哥发生枪击事件,至少1... △芝加哥市19日晚发生枪击事件的现场据当地警方20日发布的消息,美国芝加哥市19日晚发生一起枪击事件...
意大利总理回击特朗普批评:应关... △意大利总理梅洛尼(资料图)意大利总理梅洛尼20日就美国总统特朗普针对其政府的最新批评作出回应,称特...
以总理及防长被曝已命令以军在黎... 据以色列方面20日消息,以色列总理内塔尼亚胡和国防部长卡茨已下达指令,要求以军在黎巴嫩停火。根据该指...
梁文杰称台湾人几乎不吃凤梨释迦... 海峡导报综合报道 台陆委会副主委梁文杰18日称凤梨释迦“台湾人几乎不吃,是仰大陆鼻息的农产品”,引起...
伊朗谈判代表已启程前往瑞士 据伊朗方面20日消息,伊朗谈判代表已启程前往瑞士,就谅解备忘录与美方进行讨论。6月20日,巴基斯坦外...
美军称暂未观察到伊朗关闭霍尔木... 新华社华盛顿6月20日电 据美国媒体20日援引美国高级官员的话报道称,美军暂未观察到伊朗关闭霍尔木兹...
万亿市场,“爆发前夜” 就在SpaceX6月12日完成纳斯达克首秀前,创始人埃隆·马斯克在一场访谈上确认,SpaceX正在开...
乌俄互指对方在赫尔松州发动袭击 乌克兰赫尔松州军事管理局20日在社交媒体发文称,截至当天早上6时,赫尔松州乌控区在过去24小时内遭俄...