抓取前10名PR/Alexa网站的算法
我正在尝试写一个脚本,用来抓取当前排名前10的PR/Alexa网站。因为PR/Alexa的排名经常变化,所以我的脚本需要能够处理这种情况,也就是说,今天可能没有某个网站在前10名,但明天可能就会有。
我不知道该从哪里开始。我对抓取的概念有一些了解,但在这里我遇到了瓶颈。可能会有前50个网站,甚至前500个网站,这些我当然可以进行配置。
我读过关于谷歌爬虫的内容,但对于这个简单的任务来说,它太复杂了。我很好奇,谷歌、雅虎和必应是如何抓取互联网上数十亿个网站的。我想知道的是,谷歌是如何识别新上线的网站的。
好吧,这些都是很深的细节,我会稍后再去了解。现在我更关心的是我的问题,我该如何抓取前10个PR网站。
你能提供一个示例程序吗?这样我可以更好地理解。
2 个回答
0
Alexa 有一个付费的 API 可以使用
**还有一个免费的 API**
有一个免费的 API(不过我到现在还没找到任何相关的文档)。
http://data.alexa.com/data?cli=10&url=%YOUR_URL% 你也可以用以下方式查询更多数据:
http://data.alexa.com/data?cli=10&dat=snbamz&url=%YOUR_URL% 这里的 dat 字母组合决定了你能获取到什么信息。这个 dat 字符串是我找到的,似乎有更多选项。此外,cli 会完全改变输出,这个选项会返回一个包含很多信息的 XML 格式。
编辑:这个 API 是 Alexa 工具栏使用的。
1
获取前25个网站其实很简单(如果我理解你想做的事情没错的话)
代码:
from bs4 import BeautifulSoup
from urllib.request import urlopen
b = BeautifulSoup(urlopen("http://www.alexa.com/topsites").read())
paragraphs = b.find_all('p', {'class':'desc-paragraph'})
for p in paragraphs:
print(p.a.text)
输出结果:
Google.com
Facebook.com
Youtube.com
Yahoo.com
Baidu.com
Wikipedia.org
(...)
不过要注意,有些国家的法律可能会比较严格。请自行承担风险。