网络数据爬取(一)初试BeautifulSoup

学习网络数据采集(一)

创建一个网络爬虫来抓取 http://www.pythonscraping.com/pages/warandpeace.html这个网页。

在这个页面里,小说人物的对话内容都是红色的,人物名称都是绿色的。

抓出整个页面,然后创建一个 BeautifulSoup 对象:

from urllib.request import urlopen
from bs4 import BeautifulSoup

html = urlopen("http://www.pythonscraping.com/pages/warandpeace.html")
bs0bj = BeautifulSoup(html,"lxml")
nameList = bs0bj.findAll("span",{"class":"green"})
for name in nameList:
    print(name.get_text())

运行结果(返回的为人物名称列表,仅列出部分结果):

Anna
Pavlovna Scherer
Empress Marya
Fedorovna

 知识点一:

在BeautifulSoup中定义了两个函数:

findAll(tag, attributes, recursive, text, limit, keywords)
find(tag, attributes, recursive, text, keywords)

在 95% 的时间里都只需要使用前两个参数: tag 和 attributes 。

标签参数tag-----传一个标签的名称或多个标签名称组成的 Python列表做标签参数,如:

findAll({"h1","h2","h3","h4","h5","h6"}) # 需为标签,不能够为任意字符。

属性参数 attributes----用一个 Python 字典封装一个标签的若干属性和对应的属性值。如:

findAll("span", {"class":{"green", "red"}}) # (标签,{“标签”:{“属性一”,“属性二”,“属性三”.......}})

递归参数 recursive-----一个布尔变量,默认为True, findAll 会根据你的要求去查找标签参数的所有子标签,以及子标签的子标签。如果 recursive 设置为 False , findAll 就只查找文档的一级标签。(一般不需设置)文本参数 text----用标签的文本内容去匹配,而不是用标签的属性。假如我们想查找前面网页中包含“the prince”内容的标签数量,我们可以把之前的 findAll 方法换成下面的代码:

nameList = bsObj.findAll(text="the prince")
print(len(nameList))

范围限制参数 limit----只用于 findAll 方法。 find 其实等价于 findAll 的 limit 等于1 时的情形。

关键词参数 keyword----可以让你选择那些具有指定属性的标签,如:

allText = bsObj.findAll(id="text")
print(allText[0].get_text())

知识点二:

 get_text()函数功能为,去掉超链接、段落和标签都清除掉,只剩下一串不带标签的文字。

用 BeautifulSoup 对象查找你想要的信息,比直接在 HTML 文本里查找信息要简单得多。通常在你准备打印、存储和操作数据时,应该最后才使用 .get_text() 。一般情况下,你应该尽可能地保留 HTML 文档的标签结构。

补充知识点:

标签:如<html>、<span>、<head>、<body>、<abbr>等,一般查看网站源码,发现在符号“<>”里面的便为标签(我猜的!!如有错误请大神指正。)

参考文献:

《Python网络数据采集》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HPF4212

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值