06
2018
11

Python小记:简易爬虫场景中BeautifulSoup4模块中find_all方法的使用笔记

     最近用到了几次BeautifulSoup4模块来爬取一些网站资源,做下笔记。

     个人把BeautifulSoup模块理解为python中的一个HTML解析库,分为BeautifulSoup4和BeautifulSoup3,python2.7的用户推荐BeautifulSoup4,直接通过 “pip install BeautifulSoup4”来安装,该模块已被移植到BS4,引用方式如下“from bs4 import BeautifulSoup4”.

     先说说简易爬虫场景中的一个常见需求,获取返回包(HTML文本)中指定标签中属性值/标签内的值 ,除去re正则的方法,我们可以通过BeautifulSoup模块来解析返回包,从而像操作多元数组一样来获取我们想要的内容。

    以下端HTML代码为例:

<html>
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <body>
    <a href="www.baidu.com" target="_blank">百度</a>
    <a href="www.google.com" target="_blank">谷歌</a>
    <a href="www.taobao.cn" target="_parent">淘宝</a>
    <a href="www.jd.com" target="_self">京东</a>
    <b>test</b>
     <b title="yyy">ddd</b>
    </body>
</html>

    想获取所有的“a标签”,见如下代码

soup=BeautifulSoup('上述代码','html.parser')
#'上述代码'这里可以传入reponse类型的text,或者open一个本地html文件,或者传入一个字符串变量
#第二参数为选择的解析器
aTitle=soup.find_all('a') #find_all方法还支持'条件检索',比如 find_all('a',target="_blank")
#这一步之后,aTitle相当于一个二元数组,第一层的存在四个键值对,四个值分别为四个"a标签",这些"a标签"可以理解为一元数组
#每个"a标签"中存在两个键值对,键就是属性名,值就是对应的属性值
#比如我想取到"淘宝链接"的'target'属性的值,可以 soup[2]['target']
#取"谷歌链接"中的'href'属性的值,可以 soup[1]['href']
#和数组操作如出一辙,取到这些标签内的值也很容易
#比如取到第一个"a标签"内的值,也就是‘百度’两个字,可以 soup[0].get_text() get_text方法就是取标签内的值的
#取第四个"a标签"内的值,也就是‘京东’两个字,可以 soup[3].get_text()

   大致的知识点就是 find_all() 与 get_text()

« 上一篇 下一篇 »

评论列表:

1.我好帅  2018-11-06 22:47:36 回复该评论
我不信alert(k)
2.我好帅  2018-11-06 22:47:45 回复该评论
我不信alert(k)
3.我好帅  2018-11-06 22:47:47 回复该评论
我不信alert(k)
4.我好帅  2018-11-06 22:47:48 回复该评论
我不信alert(k)
5.我好帅  2018-11-06 22:47:49 回复该评论
我不信alert(k)

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。