我问你
如果你是一个网站所有者｡
你想让人们刮你的网站吗？
你会希望人们访问你的数据, 也许是你的爱彼迎, 你真的很努力地列出这些产品｡
这里有不同的信息｡
这是公平的, 任何人都可以来, 只是抓住这些信息, 也许使一个副本, 您的网站？
嗯, 也不尽然｡
好吧, 我知道了
我的意思是, 这要看情况｡
大多数时候, 你并不真的希望人们刮你的网站｡
虽然HTML和网站的数据对我们所有人都是可用的, 但这只是我们的互联网如何工作, 以便人们可以看到不同的网页｡
大多数网站并不真的希望你抓取他们的数据｡
现在有一种方法, 网站告诉你什么可以刮, 什么不能刮｡
它叫机器人点文本｡
我们简单地说在一个网址的结尾斜杠｡
机器人. txt.
如果我点击回车｡
你看那个｡
Airbnb有机器人｡ 文本｡
机器人｡ txt只是简单地说, 嘿, 如果你是一个机器人, 如果你是一个网页刮刀或蜘蛛｡
这就是为什么你被允许和不被允许做｡
这是不是意味着如果我们违反规则, 他们会阻止我们？
不, 他们不能真正阻止我们｡
但这是一个灰色地带, 你想在这里是道德的, 只刮数据, 一个网站允许你｡
所以如果我们看看机器人｡ txt, 你在这里看到Airbnb已经创建了一个税务文件,
告诉我们什么可以和不能刮｡
例如, 我们看这里的用户代理, 它说, 谷歌机器人Airbnb告诉,
嘿, 谷歌机器人, 你可以刮取这些信息, 但我们不允许你刮取帐户校友日历,
你会看到有很多东西是不允许的｡
那么必应搜索机器人呢？
宾, 你可以这么做, 但你不能
删除所有这些数据｡
我们有Yandex｡
我们还有什么？
我们有百度蜘蛛｡
然后我们还有用户代理Starr｡
这意味着其他人, 其他人？
你可以刮这个, 但不能刮这些信息｡
好吧, 我们换一个｡
让我们去Udemy. com｡
在这里, 我们可以看到, 我们不希望任何人抓取或爬行通过任何这些信息,
但我们允许您访问它｡
API 2. 0, 当然, 借贷元件｡
好吧, 那太糟了｡
看起来Udemy并不允许我们做任何事情, 除了这个API 2｡ 0件事, 我们稍后再谈｡
那黑客新闻呢
我们要围绕Hacker News建立一个项目｡
所以让我们看看黑客新闻是否允许我们刮它｡
好吧, 我会的
所以这个列表要小一些｡
我们可以看到所有用户都是这样｡
不允许我们使用这些终结点｡
所以它说只要你不使用这些网址, 我们就可以走了｡
也就是说, 如果我们只想刮主页｡
就在这里｡
那就好｡
如果我们要尝试, 让我们说, 去评论｡
那也没关系, 因为这一条不是机器人的文字｡
如果你还记得的话, 如果我们去看机器人文本｡
那就好｡
他们唯一要求的是我们有30分钟的爬行延迟｡
也就是说, 如果我们要抓取他们的网站, 我们应该有一个暂停,
这样我们就不会不断地使用程序来访问网站, 因为, 嗯, 这将使他们的服务器过载, 也许会减慢他们的网站｡
那么, 我们刚刚学到了什么？
我们了解到, 有道德和不道德的方式刮网站｡
是的, 你可以刮任何网站你想要的｡
事实上, 还有铬插件｡
如果你在谷歌浏览器中插入网页抓取器, 有一吨的网页抓取器, 你可以使用,
让你刮网站, 甚至不写一行代码｡
这是一件好事, 实践道德编程, 这意味着检查一个网站的条款和条件之前, 你刮它,
检查机器人｡ txt, 看看你可以和不能刮｡
因为通常你从一个网站上收集的数据不应该用于商业目的, 因为你是在利用别人的努力工作来赚钱｡
这就是为什么当我们去黑客新闻, 并要求一个残酷的30秒延迟｡
好吧, 我知道了
如果您从某个网站上请求数据, 以攻击您得程序, 这基本上就是垃圾邮件, 因为这可能会破坏Hacker
News.
现在, 在我们开始web抓取之前, 我想注意另外一件事, 那就是API的概念｡
如果你还记得我们访问Udemy机器人的时候｡ txt, 他们确实告诉我们, 有一些允许的区域, 我们可以刮或端点,
我们可以使用｡
你可以看到一些网站实际上允许你访问数据｡
例如, Udemy为我们提供了一个讲师API｡
也就是说, 如果你是Udemy的讲师, 你实际上可以使用他们的API｡
你可以在这里看到它, 这样你就可以得到不同的数据｡
也许你可以得到一个课程复习清单, 也许一个课程问题清单｡
但如果我在这里输入URL, 我会得到一个无效的丢失令牌｡
因为我现在还不是导师, 至少我还没有验证我是导师｡
在Udemy上, 它会说, 嘿, 这个数据只适用于有效的讲师,
所以我需要传递一个令牌来证明我是Udemy上的讲师｡
而且很多网站给予你我们所说的API或者应用编程接口访问｡
在一个叫做JSON的表单中, 给予你你需要的数据, 一些网站只允许你在你是一个有效用户的情况下这样做｡
例如, 最流行的API之一是GitHub API, 您可以通过它访问GitHub中的不同信息｡
但为了使用它, 我们必须创建一个用户帐户并进行验证, 以便我们是我们所说的那个人｡
但也有像星星API这样的网站让我们免费访问｡
也就是说, 任何人都可以使用它｡
我们不需要验证我们是否为用户｡
我们提出请求时不必给予令牌｡
相反, 我们可以只请求数据｡
例如, 如果我使用swap API, 输入people, 然后按回车键｡
你看那个｡
我免费得到所有这些数据, 这样我就可以围绕星星创建一个应用程序, 这就是如此快乐的含义｡
它代表星星API, 我们可以获取所有我们想要的信息｡
我们还提供了JSON占位符等功能, 在构建简单项目时,
我非常喜欢使用它来获取照片等不同信息｡
您可以在这里看到, 这是一个提供信息的API｡
有不同的照片我们可以使用｡
也许我们有不同的职位, 我们可以使用｡
同样, 这些都是我们所说的JSON格式, 它不是HTML, 只是数据的一个清理版本, 以便人们使用｡
从网站获取数据最简单的方法通常是使用API｡
有时网站允许我们轻松访问它, 或者他们可能有一个API, 但它只限于某些用户｡
也许你得注册他们的服务｡
也许你得为他们的API付费｡
这样的话我们就有这个了｡
但是, 还有web抓取, 这可能是一个网站给予你访问API｡
也许你只想知道这些信息｡
例如, 据我所知, Hacker News并不提供API｡
因此, 我们可能只想刮取HTML, 所有的网站, 看看我们可以使用｡
那么我们如何使用Python来抓取一个网站呢？
让我们在下一个视频中一探究竟｡