抓取前10名PR/Alexa网站的算法

-1 投票
2 回答
568 浏览
提问于 2025-04-18 11:22

我正在尝试写一个脚本,用来抓取当前排名前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 工具栏使用的。

获取 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
(...)

不过要注意,有些国家的法律可能会比较严格。请自行承担风险。

撰写回答