所有分类
  • 所有分类
  • 实时新闻

Python网络爬虫3BeautifulSoup_解析和提取源代码数据的工具

BeautifulSoup 是 python 用来解析爬取的网页源代码的一个库,因其码的简洁性,因此应用得比较多。对于解析高度结构化的HTML,相比于正则表达式,用 beautifulsoup 能更快速便捷地进行解析和提取。

BeautifulSoup 安装和导入

安装BeautifulSoup库,如果是在pycharm中的话就用file->settings->project->project interpreter,然后点击左下角的加号搜索 BeautifulSoup4,点击安装库即可。

Python网络爬虫3BeautifulSoup_解析和提取源代码数据的工具

或者是在python安装目录下的 Scripts,在地址栏输入 cmd 或者是 shift 加右键打开 powershell,拖动 pip.exe 到窗口中,再加上 install beautifulsoup4,回车即可。(也不一定要在这个目录下面运行,不过得配置好环境变量,环境变量其实就是在电脑的任意位置,如果命令不在当前目录下能运行,就会自动搜索环境变量中的地址)

这里是已经安装好的

Python网络爬虫3BeautifulSoup_解析和提取源代码数据的工具

导入库的代码也有要注意的地方,就是导入的库包,用的是 eautifulsoup4的缩写。

from bs4 import BeautifulSoup

beautifulsoup解析和提取源代码的常用方法

我们以如下的源代码为例进行介绍。

res =

我是一级标题我是一级小标题

文本内容

网址名称

1.获取特定标签的内容

首先导入 beautifulsoup 方法,然后设置 html.parser HTML解析器。接着用解析器对象的 select 方法选取标签名为输入的参数的内容(注意:最后获取的结果是个列表)。

from bs4 import BeautifulSoupsoup = BeautifulSoup(res,html.parser)title = soup.select(h1)print(title)

输出结果为:[

我是一级标题,我是一级小标题]

想要获取这些结果中,除了头尾标签的中间的文本内容,可以把列表中的元素拿出来然后加上.text 即可。

2.获取特定clss属性的内容

如果要获取特定class属性的内容,就需要把解析器对象传入的参数写为:.class参数值,如下,我们要提取网页代码中的class属性为 title 的内容。

from bs4 import BeautifulSoupsoup = BeautifulSoup(res,html.parser)title = soup.select(.title)print(title)

代码会把所有的class属性值为传入参数的内容都找出来,所以这个方法得结合前面找特定标签内容的方法结合起来,就能具体到某一类内容下,的某一属性值对应的方法。

特别的,id 属性的查找用# 来声明,如下,找到id属性为 title 的内容:

data = soup.select(#title)

3.获取内容中的网址

前面说了获取含标签的内容,以及如何提取内容中不含标签的部分,而实际中有些信息是在标签里面的,比如,链接信息,那我们怎么去除文本内容只保留标签内容中的网址呢?用的是返回内容[href],就是在返回的内容后加上[href]索引。

from bs4 import BeautifulSoupsoup = BeautifulSoup(res,html.parser)title = soup.select(a)print(title[][href])

注意:解析器返回的对象是一个列表,列表里面的对象才具有”href”这个参数,所以需要先把元素从列表中取出来。

4.多层次筛选

实际的代码常常是比较复杂的,需要的筛选条件也是多层次多条件的,有人会说,那就一层层把内容提取出来然后再筛选呗,其实 beautifulsoup 可以直接解析多层次的条件。

如:我要筛选属性值为 title 的区块代码下的 h1标签的部分,可以写为:data = soup.select(.title h1)。

只要在多个条件之间用空格隔开就好。同理,上面三个常用的解析函数可以灵活配合使用。

熟练掌握以上的技巧,就相当于是成功进入beautifulsoup的世界啦,希望对你有帮助。

原文链接:https://www.w1ym.com/66408/,转载请注明出处~~~
0

评论0

请先

站点公告

【温馨提示】 本站不建议您对本站支付任何费用或开通任何会员本站99%资源为免费资源只提供共享不提供技术支持,本站资源主要以学习开发为主,本站是为个人资源记录学习研究等情况而建立,如特殊原因下载,需在24小时删除相关资源。本站资源均来自互联网收集或网友分享,若有侵权,请联系站长删除,谢谢。立即查看
显示验证码
没有账号?注册  忘记密码?