欢迎回来｡
我们刚刚收到了黑客新闻的所有数据｡
至少在我们请求的页面上, 我们在这里看到我们收到了所有这些HTML信息, 这很棒｡
这只是我们收到的字符串｡
漂亮的汤允许我们做的是一个叫做解析的事情｡
也就是说, 我们可以使用beautiful soup将其从字符串转换为我们可以操作和使用的实际对象｡
使用Python将这些数据修改为我们想要的｡
让我来告诉你我的意思｡
所以我们现在可以用漂亮的汤｡
我会去掉它的质地, 这样就可以说是美味的汤了.
然后在这里我可以给予它我们想要的字符串, 所有的数据都是响应点文本, 就像我们看到的, 就是左边的那个｡
然后我们解析它, 就是我们告诉它, 哎, 这个数据需要修改成一个我们实际上可以使用的HTML｡
所以我们用漂亮汤的方法就是简单地说HTML点解析器｡
这告诉美丽的汤, 嘿, 这是HTML, 我想让你解析它｡
所以把它从字符串转换成我们可以实际使用的东西｡
这就创建了我们称之为soup对象的东西｡
我把它赋给一个soup变量, 但我想怎么叫都行.
你们中的一些人可能会问这到底是什么｡
我们必须这么做的原因是beautiful soup还解析另一种数据, 称为XML｡
同样, 如果我们去文档网站, 让我们去漂亮的汤文档,
让我们只是搜索一个HTML点解析器｡
您可以在这里看到, 我们可以使用不同的解析器, 例如内置的HTML解析器,
但也可以安装XML解析器和其他解析器｡
因此, 任何时候你有问题, 总是参考文档, 只要控制F,
你就会找到你需要的任何额外信息｡
99%的情况下, 您只是使用HTML解析器作为默认解析器｡
但这意味着什么呢？
这对我们有什么帮助？
好吧, 让我们来看看｡
如果我在这里打印我们刚刚创建的soup对象, 我们一直走到这里, 现在先清除它,
然后再次运行python代码｡
被刮了起来｡
好吧, 我会的
我们在这里看到我们得到了soup对象｡
实际上更干净一点｡
它不再是一根弦｡
您可以在这里看到它是完整的HTML｡
我们有标题, 我们有头, 我们有身体标签｡
所以我们实际上可以操纵它｡
嗯, 一个蟒蛇的物体｡
比如说, 我可以做汤点身体来抓取身体｡
所以如果我保存并再次运行脚本｡
你去那里｡
我们现在刚收到尸体｡
让我把这个清除一下, 这样我们就可以看到它了｡
我再运行一次｡
你看到了吗？
现在我们只有尸体了｡
我甚至可以做点内容之类的事情｡
如果我运行这个, 让我们再次清除它｡
我得到了整个内容, 但你在这里看到的是一个列表形式｡
太棒了｡
现在, 使用这个soup对象, 我们可以做一些非常好的事情｡
例如, 假设我想找到｡
使用find all方法, 返回这个soup对象中的所有div｡
如果我保存, 我们就清除它并运行脚本｡
这很酷吧？
我们在该页面包含的列表中获取所有dev对象｡
那么所有的链接呢？
也许我们想得到所有的标签｡
这些都是网站的链接｡
好吧, 让我们再一次暂时清除它, 然后运行脚本｡
看看这个｡
我们有所有的攻击｡
这就是页面上的所有链接｡
你可以想象我们可以在这里做不同的用途｡
如果我在这里运行title, 我们可以说title｡
我们得到了soup对象的title标记｡
如果我在这里执行类似a的操作, 也就是a标记, 然后再次运行脚本｡
第一次发作我来处理｡
另一个我们可以做的是查找｡
所以找都找不到, 反而找到了井, 第一件事｡
同样, 如果我找到一个并单击此处的run, 您会看到我得到了同样的结果｡
它会寻找第一个项目｡
为什么这有用？
因为如果我们访问Hacker News网站, 我想做得是转到此处得第一个链接, 右键单击它,
然后执行检查.
这就给了我们这个HTML dom对象, 它给了我们页面上的所有信息｡
好吧, 我知道了
所以看着这个, 我可以肯定｡
我想要一个标签｡
有链接和标题｡
但我也可能想要选票｡
好吧, 我知道了
所以如果我继续往下走｡
到这一部分｡
你看这里, 这就是乐谱｡
我可能也会对这是多少分感兴趣｡
例如, 我可以在这里使用ID属性, 所以让我们复制这个分数｡
我甚至可以执行find之类的操作, 并为给予指定一个等于该值的ID｡
如果我现在让我们清除所有并运行文件｡
你看到了吗？
我得到了与这个分数完全相同的标签｡
因此, 通过允许我们在整个页面中抓取这些不同的元素, 我们可以有选择地挑选我们想要的数据｡
让我们在这里休息一下, 在下一个视频中了解更多信息｡